700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > (C语言)八大排序之:插入排序 冒泡排序 选择排序

(C语言)八大排序之:插入排序 冒泡排序 选择排序

时间:2023-08-15 00:43:49

相关推荐

(C语言)八大排序之:插入排序 冒泡排序 选择排序

1 /* 2 * FILE: p198_sort.c3 * DATE: 01144 * --------------5 */6 7 #include <stdio.h>8 9 /* 从小到大 排序 */10 void insert_sort_min(int *array, int length);11 void bubble_sort(int *array, int length);12 void select_sort(int *array, int length);13 14 void print(const int *array, const int length);15 16 #define swap(a, b) do{ \17 (a) = (a) ^ (b); \18 (b) = (b) ^ (a); \19 (a) = (a) ^ (b); \20 }while(0)21 22 int main(int argc, char *argv[])23 {24 int a[] = {5,2,7,4,9,1,2,0};25 int len = sizeof(a) / sizeof(a[0]);26 print(a, len);27 insert_sort_min(a, len);28 print(a, len);29 bubble_sort(a, len);30 print(a, len);31 select_sort(a, len);32 print(a, len);33 return 0;34 }35 36 /* 直接插入排序 straight insertion sort */37 /* 若当前数 比前一个数更小,有元素都向后移一位38 * 再将当前数 插入至它应在的位置39 * 当前数的前面 已经排好序 */40 void insert_sort_min(int *array, int length)41 {42 int i;43 for(i=1; i<length; i++)44 {45 int j = i;46 int temp = array[i];47 // 小心:是temp<array[j-1];而不是a[j]48 // 若需从大到小 则temp>array[j-1]49 while((j>0) && (temp < array[j-1]))50 {51array[j] = array[j-1];52j--;53 }54 array[j] = temp;55 }56 }57 58 /* 冒泡排序 bubble sort */59 /* 相邻的两两比较 */60 void bubble_sort(int *array, int length)61 {62 int i, j;63 for(i=0; i<length-1; i++)64 for(j=1; j<length-i; j++)65 {66// 若需从大到小,则a[j]>a[j-1]67if(array[j] > array[j-1])68 swap(array[j], array[j-1]);69 }70 }71 72 /* 简单选择排序 simple selection sort */73 /* 当前元素 与其后的所有元素比较 */74 void select_sort(int *array, int length)75 {76 int i, j;77 for(i=0; i<length-1; i++)78 for(j=i+1; j<length; j++)79 {80// 若需从大到小,则a[j]>a[i]81if(array[j] < array[i])82 swap(array[j], array[i]);83 }84 }85 86 void print(const int *array, const int length)87 {88 int i;89 for(i=0; i<length; i++)90 printf("%d ", array[i]);91 printf("\n");92 }

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。