zoukankan      html  css  js  c++  java
  • 排序:正序冒泡,交错冒泡,插入排序,选择排序,快速排序

      1 #include<stdio.h>
      2 #include<stdlib.h>
      3 #include<time.h>
      4 #include<string.h>
      5 const int N=10;                            //修改随机数据量
      6 bool onOroff=1;                            //数组打印开关:1要打印,0不打印
      7 void bubble_sort(int a[],int n)
      8 {
      9     for(int i=0 ; i<N ; ++i)
     10     {
     11         for(int j=0 ; j<N-1 ; ++j)
     12             if(a[j]>a[j+1])
     13             {
     14                 int tmp=a[j+1];
     15                 a[j+1]=a[j];
     16                 a[j]=tmp;
     17             }
     18     }
     19 }
     20 
     21 void bubble_sort2(int a[],int n)
     22 {
     23     int i=0,j=n-1;
     24     while(i<j)
     25     {
     26         for(int k=i ; k<=j-1 ; ++k)
     27             if(a[k]>a[k+1])
     28             {
     29                 int tmp=a[k+1];
     30                 a[k+1]=a[k];
     31                 a[k]=tmp;
     32             }
     33         --j;
     34         if(i>=j)
     35             break;
     36         for(int k=j ; k>=i ; --k)
     37             if(a[k]<a[k-1])
     38             {
     39                 int tmp=a[k-1];
     40                 a[k-1]=a[k];
     41                 a[k]=tmp;
     42             }
     43         ++i;
     44     }
     45 }
     46 
     47 void insert_sort(int a[],int n)
     48 {
     49     int i=1,j=0,now=0,tmp=0;
     50     for(i=1 ; i<N ; ++i)
     51     {
     52         now=a[i];
     53         for(j=i-1 ; j>=0 ; --j)
     54         {
     55             if(a[j]>now)
     56                 a[j+1]=a[j];
     57             else
     58                 break;
     59         }
     60         a[j+1]=now;
     61     }
     62 }
     63 
     64 void select_sort(int a[],int n)
     65 {
     66     int MIN,MINi,tmp;
     67     for(int i=0 ; i<N ; ++i)
     68     {
     69         MIN=0x3fffffff;
     70         for(int j=i ; j<N ; ++j)
     71             if(a[j]<MIN)
     72             {
     73                 MINi=j;
     74                 MIN=a[j];
     75             }
     76         tmp=a[i];
     77         a[i]=a[MINi];
     78         a[MINi]=tmp;
     79     }
     80 }
     81 
     82 int part_qsort(int a[], int n ,int l,int r)
     83 {
     84     int mid=0,tmpmid=a[l];
     85     while(l<r)
     86     {
     87         while(l<r && a[r]>=tmpmid)
     88             --r;
     89         if(l<r)
     90         {
     91             a[l]=a[r];
     92             ++l;
     93         }
     94         else
     95             break;
     96         while(l<r && a[l]<=tmpmid)
     97             ++l;
     98         if(l<r)
     99         {
    100             a[r]=a[l];
    101             --r;
    102         }
    103         else
    104             break;
    105     }
    106     a[l]=tmpmid;
    107     return l;
    108 }
    109 
    110 void myquick_sort(int a[],int n,int l,int r)
    111 {
    112     int position;
    113     if(l<r)
    114     {
    115         position=part_qsort(a,n,l,r);
    116         myquick_sort(a,n,l,position-1);
    117         myquick_sort(a,n,position+1,r);
    118     }
    119 }
    120 
    121 void P(int a[],int n)
    122 {
    123     if(1==onOroff)
    124     {
    125         for(int i=0 ; i<N ; ++i)
    126             printf("%d ",a[i]);
    127         printf("
    ");
    128     }
    129 }
    130 
    131 int main(int argc,char* argv[])
    132 {
    133     //排序
    134     clock_t bg,end;
    135     srand(time(NULL));
    136     int arr3[N];
    137     for(int i=0 ; i<N ; ++i)
    138         arr3[i]=rand()%100;
    139     printf("随机数据量:%d
    原始数组:",N);
    140     P(arr3,N);
    141     printf("
    ");
    142     //正序冒泡
    143     int arr_bubble[N];
    144     memcpy(arr_bubble,arr3,sizeof(arr3));
    145     bg=clock();
    146     bubble_sort(arr_bubble,N);
    147     end=clock();
    148     printf("正序冒泡:");
    149     P(arr_bubble,N);
    150     printf("耗时:%5.15f秒
    
    ",(double)(end-bg)/CLOCKS_PER_SEC);
    151     //交错冒泡
    152     memcpy(arr_bubble,arr3,sizeof(arr3));
    153     bg=clock();
    154     bubble_sort2(arr_bubble,N);
    155     end=clock();
    156     printf("交错冒泡:");
    157     P(arr_bubble,N);
    158     printf("耗时:%5.15f秒
    
    ",(double)(end-bg)/CLOCKS_PER_SEC);
    159     //插入排序
    160     memcpy(arr_bubble,arr3,sizeof(arr3));
    161     bg=clock();
    162     insert_sort(arr_bubble,N);
    163     end=clock();
    164     printf("插入排序:");
    165     P(arr_bubble,N);
    166     printf("耗时:%5.15f秒
    
    ",(double)(end-bg)/CLOCKS_PER_SEC);
    167     //选择排序
    168     memcpy(arr_bubble,arr3,sizeof(arr3));
    169     bg=clock();
    170     insert_sort(arr_bubble,N);
    171     end=clock();
    172     printf("选择排序:");
    173     P(arr_bubble,N);
    174     printf("耗时:%5.15f秒
    
    ",(double)(end-bg)/CLOCKS_PER_SEC);
    175     //快速排序
    176     memcpy(arr_bubble,arr3,sizeof(arr3));
    177     bg=clock();
    178     myquick_sort(arr_bubble,N,0,N-1);
    179     end=clock();
    180     printf("快速排序:");
    181     P(arr_bubble,N);
    182     printf("耗时:%5.15f秒
    
    ",(double)(end-bg)/CLOCKS_PER_SEC);
    183 
    184     system("pause");
    185     return 0;
    186 }

     

  • 相关阅读:
    DetailsView应用之雕虫小技
    Javascript 调用C# 代码并传递参数的两种方法
    一键还原后,重装一遍 bartender7.75软件, 添加空白标签的时候提示 无法找到字体,无法在没文字情况下运行 求电脑帝解释
    JS处理Enter键触发执行的操作
    SoundManager 2 实现web页面中嵌入声音播放
    用Nexus搭建Maven远程仓库[私服]
    AmCharts一款统计图表及股票图表的插件
    HTML5添加网页音效
    Jquerymenuaim流畅的菜单滑动体验
    UML之JUDE{Astah}使用介绍
  • 原文地址:https://www.cnblogs.com/Evence/p/4469140.html
Copyright © 2011-2022 走看看