冒泡(Bubble)+插入(Insertion)排序(刚学会,出来晒晒)
(插入排序)程序代码:
#include <stdio.h> void insertion_sort(int * data, int begin, int end) { int i, j, k, temp; for(i = begin + 1; i <= end; i++) { for(j = 0; j < i; j++) if(data[j] > data[i]) break; temp = data[i]; for(k = i; k > j; k--) data[k] = data[k - 1]; data[j] = temp; } } int main(void) { int array[10], i; for(i = 0; i < 10; i++) scanf("%d", array + i); insertion_sort(array, 0, 9); for(i = 0; i < 10; i++) printf("%d ", array[i]); return 0; }
(冒泡排序)
程序代码:
#include <stdio.h> void swap(int * p1, int * p2) { int temp = *p1; *p1 = *p2; *p2 = temp; } void bubble_sort(int * data, int begin, int end) { int i, j, flag = 1; for(i = begin; i < end - begin && flag; i++) { flag = 0; for(j = begin; j < end - begin - i; j++) { if(data[j] > data[j + 1]) { swap(data + j, data + j + 1); flag = 1; } } } } int main(void) { int array[10], i; for(i = 0; i < 10; i++) scanf("%d", array + i); bubble_sort(array, 0, 9); for(i = 0; i < 10; i++) printf("%d ", array[i]); return 0; }
这样的算法算是最好的吗?请高手指教一下,谢谢!
[ 本帖最后由 lz1091914999 于 2011-6-11 16:03 编辑 ]