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("\n"); 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原始数组:",N); 140 P(arr3,N); 141 printf("\n"); 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秒\n\n",(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秒\n\n",(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秒\n\n",(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秒\n\n",(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秒\n\n",(double)(end-bg)/CLOCKS_PER_SEC); 183 184 system("pause"); 185 return 0; 186 }
时间: 2024-11-03 22:36:27