冒泡排序,选择排序,插入排序,希尔排序

    技术2024-01-10  80

    #include<stdio.h> #include<stdlib.h> #include<windows.h> #include<string.h> int main0()//冒泡排序 { int a[]={1,3,2,-1,-9}; int i,j,temp; for(i=0;i<5;i++) { for(j=i+1;j<5;j++) { if(a[i]>a[j]) { temp=a[i]; a[i]=a[j]; a[j]=temp; } } } for(i=0;i<5;i++) { printf("%d ",a[i]); } } int main1()//选择排序 { int a[]={1,3,-1,-2}; int min,i,j,temp; for(i=0;i<4;i++) { min=i; for(j=i+1;j<4;j++) { if(a[j]<a[min]) min=j; } if(min !=i) { temp=a[i]; a[i]=a[min]; a[min]=temp; } } for(i=0;i<4;i++) { printf("%d ",a[i]); } } int main2()//插入排序 { int a[5]={1,-2,3,4,-9}; int i,j,temp; for(i=1;i<5;i++) { if(a[i]<a[i-1]) { temp=a[i]; for(j=i-1;j>=0 && temp<a[j];j--) { a[j+1]=a[j]; } a[j+1]=temp; } } for(i=0;i<5;i++) { printf("%d ",a[i]); } } int main()//希尔排序 { int a[9]={1,3,2,4,5,7,6,9,8}; int i,j,temp,k; int increasement = 9; do { increasement = increasement /3 +1; for(i =0 ;i<increasement;i++) { for(j=i+increasement ;j<9;j+=increasement)//分组 { if(a[j]<a[j-increasement]) { temp=a[j]; for(k=j-increasement;k>=0 &&temp <a[k];k-=increasement) { a[k+increasement] = a[k]; } a[k+increasement]=temp; } } } }while(increasement > 1); for(i=0;i<9;i++) { printf("%d ",a[i]); } return 0; }
    Processed: 0.012, SQL: 9