- //插入排序:每次将一个待排序的数据元素,插入到前面已经排好序的数列中的适当位置,使数列依然有序;直到待排序数据元素全部插入完为止。
- void insertSort(int a[],int len){
- int temp;
- for (int i=1; i<len; i++) {
- for (int j=0; j<i; j++) {
- if (a[j]>a[i]) {
- temp=a[i];
- a[i]=a[j];
- a[j]=temp;
- }
- }
- }
- for (int i=0; i<len; i++) {
- printf("%d ",a[i]);
- }
- }
- int main(){
- int a[]={3,4,1,11,5,2,6,566,22,43};
- int len=sizeof(a)/sizeof(int);
- ascSort(a,len);
- return 0;
- }
- 二、选择排序:每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完。
- void selectSort(int a[],int len){
- int temp;
- for (int i=0; i<len-1; i++) {
- for (int j=i+1; j<len; j++) {
- if (a[i]>a[j]){
- temp=a[i];
- a[i]=a[j];
- a[j]=temp;
- }
- }
- }
- for (int i=0; i<len; i++) {
- printf("%d ",a[i]);
- }
- }
- //三、冒泡排序:两两比较待排序数据元素的大小,发现两个数据元素的次序相反时即进行交换,直到没有反序的数据元素为止。
- void bubbleSort(int a[],int len){
- int temp;
- for (int i=0; i<len; i++) {
- for (int j=0; j<len-1-i; j++) {
- if (a[j]>a[j+1]) {
- temp=a[j];
- a[j]=a[j+1];
- a[j+1]=temp;
- }
- }
- }
- for (int i=0; i<len; i++) {
- printf("%d ",a[i]);
- }
- }
复制代码 |