C语言排序算法

    科技2024-06-12  72

    C语言排序

    1、直接插入排序*

    #include <stdio.h> void insertsort(int arr[],int n){ int i,j; for(i=2;i<=n;i++){ arr[0]=arr[i]; j=i-1; while(arr[0]<arr[j]){ arr[j+1]=arr[j]; j--; } arr[j+1]=arr[0]; } } int main(void){ int arr[11],i; printf("请输入10个数据:\n"); for(i=1;i<=10;i++){ scanf("%d",&arr[i]); } printf("原始顺序:\n"); for(i=1;i<=10;i++){ printf("%5d",arr[i]); } insertsort(arr,10); printf("\n插入排序后的顺序:\n"); for(i=1;i<=10;i++){ printf("%5d",arr[i]); } printf("\n"); return 0; }

    2、 折半插入排序

    #include <stdio.h> void BInsertSort(int arr[],int n){ int i,j; for(i=1;i<n;i++){ int x=arr[i];//将需要进行插入排序的元素赋值给x int low=0,high=i-1; while(low<=high){ int mid=(low+high)/2; if(x<arr[mid]) high=mid-1; else low=mid+1; } for(j=i-1;j>=low;j--)//记录依次后移 arr[j+1]=arr[j]; arr[low]=x; } } int main(void){ int i; int arr[10]={12,45,62,16,8,2,23,19,99,32}; printf("原始数据为:\n"); for(i=0;i<10;i++){ printf("%5d",arr[i]); } printf("\n"); BInsertSort(arr,10); printf("\n折半插入排序后的顺序为:\n"); for(i=0;i<10;i++){ printf("%5d",arr[i]); } printf("\n"); return 0; }

    3、 希尔排序

    #include <stdio.h> void shellsort(int arr[],int n){ for(int delta=n/2;delta>0;delta=delta/2){ for(int i=delta;i<n;i++){ int temp=arr[i]; for(int j=i-delta;j>=0&&temp<arr[j];j=j-delta){ arr[j+delta]=arr[j]; } arr[j+delta]=temp; } } } int main(void){ int i; int arr[10]={12,45,62,16,8,2,23,19,99,32}; printf("原始数据为:\n"); for(i=0;i<10;i++){ printf("%5d",arr[i]); } printf("\n"); shellsort(arr,10); printf("\n希尔排序后的顺序为:\n"); for(i=0;i<10;i++){ printf("%5d",arr[i]); } printf("\n"); return 0; }

    4、冒泡排序

    #include<stdio.h> void bubblesort(int arr[],int n){ int i,j; for(i=0;i<n-1;i++){ for(j=0;j<n-i-1;j++){ if(arr[j+1]<arr[j]){ int temp=arr[j+1]; arr[j+1]=arr[j]; arr[j]=temp; } } } } int main(void){ int i; int arr[10]={12,45,62,16,8,2,23,19,99,32}; printf("原始数据为:\n"); for(i=0;i<10;i++){ printf("%5d",arr[i]); } printf("\n"); bubblesort(arr,10); printf("\n冒泡排序后的顺序为:\n"); for(i=0;i<10;i++){ printf("%5d",arr[i]); } printf("\n"); return 0; }
    Processed: 0.013, SQL: 9