排序集锦
各种排序算法,总结一下,一直在遗忘......
【冒泡排序】
就是下面这个鬼啦:
c实现代码(升序):
#include<stdio.h> void BubbleSort(int *array,int num) { int i,j,temp; for(j=0;j<num;j++) { for(i=1;i<num-j;i++) { if(array[i-1]>array[i]) //倒序就把这里改成<咯 { temp=array[i-1]; array[i-1]=array[i]; array[i]=temp; } } } } int main() { int num; scanf("%d",&num); int array[num]; int i; for(i=0;i<num;i++) { scanf("%d",&array[i]); } /* Calling this functions sorts the array */ BubbleSort(array,num); for(i=0;i<num;i++) { printf("%d ",array[i]); } printf("\n"); return 0; }
【插入排序】
按顺序插入
C语言实现:
#include<stdio.h> void insertionsort(int *array,int num) { int i,j; for(i=1;i<num;i++) { int current=array[i]; j=i-1; while(j>=0 && array[j]>current) { array[j+1]=array[j];//后移为current空出位置 j--; } array[j+1]=current;//将current插入空位 } } int main() { int num; scanf("%d",&num); int array[num]; int i; for(i=0;i<num;i++) { scanf("%d",&array[i]); } insertionsort(array,num); for(i=0;i<num;i++) { printf("%d ",array[i]); } printf("\n"); return 0; }
【希尔排序】
C语言实现代
#include<stdio.h> void shellsort(int *array,int num) { int i,j,increment,temp; for(increment=num/2;increment>0;increment/=2) { for(i=increment;i<num;i++) { temp=array[i]; for(j=i;i>=increment;j-=increment) { if(temp<array[j-increment]) { array[j]=array[j-increment]; } else { break; } } array[j]=temp; } //这里其实跟普通插入一样咯,除了间隔大点 } //更改步长,直至最后increment=1,即为普通插入排序 } int main() { int num; scanf("%d",&num); int array[num]; int i; for(i=0;i<num;i++) { scanf("%d",&array[i]); } shellsort(array,num); for(i=0;i<num;i++) { printf("%d ",array[i]); } printf("\n"); return 0; }
时间: 2024-10-21 00:32:57