#include <stdio.h> #include <stdlib.h> /*函数声明部分*/ void __quick_sort(int par_array[], int low, int high); void bubble_sort(int par_array[], int array_size); void quick_sort(int par_arrayp[], int array_size); void print_array(int par_array[], int array_size); /*函数定义部分*/ void print_array(int par_array[], int array_size) { int i; for(i = 0; i < array_size; ++i) printf("%d/t", par_array[i]); printf("/n"); } /* * 冒泡排序 */ void bubble_sort(int par_array[], int array_size) { int i,j; int temp; for (i = 0; i < array_size-1; ++i)/*进行n-1次冒泡*/ { for (j = array_size-1; j > i; --j) { if (par_array[j] < par_array[j-1]) { /*交换*/ temp = par_array[j]; par_array[j] = par_array[j-1]; par_array[j-1] = temp; } } } } /* * 快速排序 * 从右到左划分整个待排序集合,最后采用分而治之的方法解决问题 * 重要的是理解划分过程 * 其实是分而治之的思想 */ void __quick_sort(int par_array[], int low, int high) { int i,j; int pivot; if(low >= high) return ; i = low; j = high; pivot = par_array[i]; while (i < j) { while (i < j && par_array[j] >= pivot) j--; if(i < j) par_array[i++] = par_array[j]; while (i < j && par_array[i] < pivot) i++; if(i < j) par_array[j--] = par_array[i]; } par_array[i] = pivot; __quick_sort(par_array, low, i-1); __quick_sort(par_array, i+1, high); } /* * 封装成统一接口 */ void quick_sort(int par_arrayp[], int array_size) { __quick_sort(par_arrayp, 0, array_size-1); } int main() { int i_array[] = {7,3,5,8,9,1,2,4,6}; int array_size = sizeof(i_array)/sizeof(int); int i_array2[] = {7,3,5,8,9,1,2,4,6}; int array_size2 = sizeof(i_array2)/sizeof(int); printf("Before bubble_sort:/n"); print_array(i_array, array_size); bubble_sort(i_array, array_size); printf("After bubble_sort/n"); print_array(i_array, array_size); printf("Before quick_sort:/n"); print_array(i_array2, array_size2); quick_sort(i_array2, array_size2); printf("After quick_sort/n"); print_array(i_array2, array_size2); system("pause"); } /* Before bubble_sort: 7 3 5 8 9 1 2 4 6 After bubble_sort 1 2 3 4 5 6 7 8 9 Before quick_sort: 7 3 5 8 9 1 2 4 6 After quick_sort 1 2 3 4 5 6 7 8 9 请按任意键继续. . . */