zoukankan      html  css  js  c++  java
  • 排序

     

    冒泡排序:

    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    int main()
    {
        //从小到大排
        int a[10]={4,1,3,2,0,6,5,7,9,8};
        int ex=0;
        int i=0;
        int j=0;
        for( i=0;i<10;i++)
        {
        for( j=0;j<9-i;j++)//唯一需要注意的地方,j<9-i,最大为8,因为下面用到j+1可以到达9
            {
            if(a[j]>a[j+1])
                {
                ex=a[j+1];
                a[j+1]=a[j];
                a[j]=ex;
                }
            }
        }
        for(i=0;i<10;i++)
            printf("%d ",a[i]);
    }

    快速排序:找个pivot,小的放左边,大的放右边

    #include<stdio.h>
    #include<stdlib.h>
    
    void qsort(int a[],int left,int right)
    {
    int pivot=a[left];//把a[left]交给pivot,那么a[left]就等于空了,因此从右边开始找大的,放在a[left]下
    //下面三个参数都是为了递归定义的
    int start=left;
    int end=right;
    int index;
    
    while(left<right){
        
    while(a[right]>=pivot&&left<right)
        {
        right--;
        }
    if(a[right]<pivot)
        {
        a[left]=a[right];
        }
    while(a[left]<=pivot&&left<right)
        {
    left++;
        }
    if(a[left]>pivot)
        {
        a[right]=a[left];
        }
            
        
                    }
    a[left]=pivot;
    index=left;//把现在中间的下标给index(也可以写做index=right)
    if(start<index)
    qsort(a,start,index-1);
    if(end>index)
    qsort(a,index+1,end);
        
    }
    
    int main()
    {
        int a[10]={8,5,6,2,3,4,9,1,7,10};
        qsort(a,0,9);
        for(int i=0;i<10;i++)
        {
        printf("%d ",a[i]);
        }
    
        return 0;
    }

     插入排序:

    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    int main()
    {
        //从小到大排,
        int i=0;
        int j=0;
        int a[10]={4,1,3,2,0,6,5,7,9,8};
        for(i=2;i<10;i++)//a[0]是监视哨,a[1]是最初的有序序列,所以从i=2出发
        {
        a[0]=a[i];
        j=i-1;
        while(a[0]<a[j])
            {
            a[j+1]=a[j];
            j--;//无序插有序,前面是有序,所以j--
            }
        a[j+1]=a[0];//换完之后a[0]算大的(比a[j]大),放后面(a[j+1])
        }
        for(i=1;i<10;i++)
        printf("%d ",a[i]);
    }

  • 相关阅读:
    阿里云Ubuntu环境搭建Docker服务
    Cocos2d-x手机游戏开发中-组合动作
    Java中将时间戳转化为Date类型
    Ubuntu14.04+eclipse下cocos2d-x3.0正式版环境的搭建
    hdu 4901 The Romantic Hero(dp)
    scikit-learn:3.4. Model persistence
    桥接模式和NAT模式差别
    JavaScript入门:004—JS凝视的写法和基本运算符
    MySQL 创建用户 与 授权
    【观点见解】解读大数据的5个误区
  • 原文地址:https://www.cnblogs.com/miaobo/p/12485601.html
Copyright © 2011-2022 走看看