• 排序算法


    一 冒泡排序
    通过左边与右边比较进行交换而实现排序

    #include <stdio.h>
    int main()
    {
    	int a[100],i,j,t,n;
    	scanf("%d",&n);
    	for(i=0;i<n;i++)
    	scanf("%d",&a[i]);
    	for(i=0;i<n-1;i++)
    	{
    		for(j=0;j<n-1;j++)
    		{
    			if(a[j]<a[j+1])
    			{
    			t=a[j];
    			a[j]=a[j+1];
    			a[j+1]=t;
    			}
    		}
    	}
    	for(i=0;i<n;i++)
    	{
    	printf("%d ",a[i]);
    	}
    	return 0;
    }
    

    二 快速排序

    #include <stdio.h>
    #include <stdlib.h>
    int a[101],n;//定义全局变量,这两个变量需要在子函数中使用;
    void quicksort(int left ,int right)
    {
        int i,j,t,temp;
        if(left>right)
        {
            return;
        }
        temp=a[left];
        i=left;
        j=right;
        while(i!=j)
        {
            //顺序很重要,要先从右往左找,找到小于基准数的数
            while(a[j]>=temp&&i<j)
                j--;
            //在从左往右找,找到大于基准数的数
            while(a[i]<=temp&&i<j)
                i++;
                if(i<j)
                {
                    t=a[i];
                    a[i]=a[j];
                    a[j]=t;
                }
        }
        //最终将基准数归位
        a[left]=a[i];
        a[i]=temp;
        quicksort(left,i-1);
        quicksort(i+1,right);
        return;
    }
    int main()
    {
        int i,j;
        scanf("%d",&n);
        for(i=1;i<=n;i++)
        {
            scanf("%d",&a[i]);
        }
        quicksort(1,n);
        for(i=1;i<=n;i++)
        {
            printf("%d ",a[i]);
        }
        return 0;
    }
    

    下面介绍函数库里的排序

    一、C中的qsort
    代码如下

    int compInc(const void *a, const void *b)
    {
    return *(int *)a - *(int *)b;
    }
    qsort(a, len, sizeof(a[0]), compInc);
    
    

    注意 :头文件#include <stdlib.h>
    此时a[0]=最小。
    当return *(int *)b - *(int *)a;
    a[0]=最大。
    二、C++中的sort

    sort(a,a+n);
    

    头文件为

    #include<algorithm>
    

    a为数组名。n为长度。
    这样默认是从小到大。
    如果想要从大到小
    添加

    int cmp(int a,int b)
    {
    	return a>b;
    }
    

    但排序许多时候要排序结构体,保持一项排序,其他的元素跟随不变。
    下次在写。

  • 相关阅读:
    Linux Shell 基本语法
    VIM选择文本块/复制/粘贴
    linux vi命令详解2
    SSH命令详解2
    JAVA调用Shell脚本
    scp命令的用法详解
    Java实践 — SSH远程执行Shell脚本
    Remote SSH: Using JSCH with Expect4j
    c++内置函数---7
    c++将引用作为函数的参数---6
  • 原文地址:https://www.cnblogs.com/skyleafcoder/p/12319603.html
Copyright © 2020-2023  润新知