C语言小白学习整理五大常用的排序方法:选择排序、冒泡排序、插入排序、希尔排序、快速排序。在此做个笔记,也欢迎大家参考治指正。
#include#define SIZE_NUM 8 void Swap(int* num1, int* num2){ int midValue = 0; midValue = *num1; *num1 = *num2; *num2 = midValue; } void Select_Sort(int* s , int n){ int i, j; for(i = 0; i < n-1; i++) for(j = i+1; j < n; j++) if(s[i] > s[j]) Swap(&s[i],&s[j]); } void MaoPao_Sort(int* s, int n){ int i, j; for(i = 0; i < n-1; i++) for(j = 0; j < n-i-1; j++) if(s[j] > s[j+1]) Swap(&s[j],&s[j+1]); } void Insert_Sort(int* s, int n){ int i, j, midValue; for(i = 1; i < n; i++){ midValue = s[i]; j = i-1; while(midValue < s[j] && j >= 0){ s[j+1] = s[j]; j--; } s[j+1] = midValue; } } void Shell_Sort(int* s, int n){ int i, j, gap; for(gap = n/2; gap > 0; gap/=2){ for(i = gap; i < n; i++) for (j = i - gap; j >= 0 && s[j] > s[j+gap]; j -= gap) Swap(&s[j],&s[j+gap]); } } void Quick_Sort(int *s , int left, int right){ if(left < right){ int i = left, j = right; int mid = s[i]; while(i < j){ while(mid < s[j] && j > left) j--; if(i < j) s[i++] = s[j]; while(mid > s[i] && i < right) i++; if(i < j) s[j--] = s[i]; } s[i] = mid; Quick_Sort(s, left, i); Quick_Sort(s, i, right); } } int main(){ int Num_Group[SIZE_NUM]; printf("enter 8 numbers:"); for(int i = 0; i < SIZE_NUM; i++) scanf("%d",&Num_Group[i]); for(int i = 0; i < SIZE_NUM; i++) printf("%5d",Num_Group[i]); //Select_Sort(Num_Group, SIZE_NUM); //MaoPao_Sort(Num_Group, SIZE_NUM); //Insert_Sort(Num_Group, SIZE_NUM); //ShellSort(Num_Group, SIZE_NUM); //Quick_Sort(Num_Group, 0, SIZE_NUM); printf("n atfter sorted:n"); for(int i = 0; i < SIZE_NUM; i++) printf("%5d",Num_Group[i]); return 0; }



