1、选择排序

(1)、算法思想:依次是下标为(0,1,2,....n)的数字和其后的所有数字进行比较,每一轮的比较结果:都先确定最前面的是最小的数字;

(2)、代码实现

#include<stdio.h>voidsort(int*a,intcount);voidshowArray(int*a,intcount);voidshowArray(int*a,intcount){inti;for(i=0;i<count;i++){printf("%d",a[i]);}printf("\n");}voidsort(int*a,intcount){inti;intj;inttmp;for(i=0;i<count;i++){for(j=i+1;j<count;j++){if(a[i]>a[j]){tmp=a[i];a[i]=a[j];a[j]=tmp;}}}}voidmain(void){inta[]={3,5,6,1,7,2,9,8};intcount=sizeof(a)/sizeof(int);sort(a,count);showArray(a,count);}

(3)、结果打印


(4)、算法分析

时间复杂度为:O(n^2);


2、交换(冒泡)排序

(1)、算法思想:相邻的2个数字,两两进行比较,每一轮的排序结果:最大的数字在最后面的位置;

(2)、代码实现

#include<stdio.h>voidswapSort(int*a,intcount);voidshowArray(int*a,intcount);voidshowArray(int*a,intcount){inti;for(i=0;i<count;i++){printf("%d",a[i]);}printf("\n");}voidswapSort(int*a,intcount){inti;intj;inttmp;for(i=0;i<count;i++){for(j=0;j<count-i;j++){if(a[j]>a[j+1]){//将大的数字放在最后面tmp=a[j];a[j]=a[j+1];a[j+1]=tmp;}}}}voidmain(void){inta[]={3,5,7,9,1,6,10};intcount=sizeof(a)/sizeof(int);swapSort(a,count);showArray(a,count);}

(3)、结果截图


(4)、算法分析

时间复杂度:O(n^2);