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]);
    }

  • 相关阅读:
    学习Node.js笔记(一)
    HTML5的新特性及技巧分享总结
    前端切图的一些笔记(整理的有点乱)
    聊一聊前端速度统计(性能统计)那些事儿(转)
    jQuery中的checkbox问题
    随笔记录
    pillow模块快速学习
    Git学习及使用
    网站(陆续更新)
    ggplot笔记001——ggplot2安装
  • 原文地址:https://www.cnblogs.com/miaobo/p/12485601.html
Copyright © 2011-2022 走看看