排序算法【快速排序】
一、快速排序算法原理
直接采用实际的例子解释原理,实际的数组如下图所示。

排序算法流程如下所示









然后按照上面顺序递归下去,直到排序完成推出。
二、算法代码
#include <stdio.h>
#include "test.h"/* 快速排序算法 */
void quick_sort(int* arr, int begin, int len)
{int data;//如果数组只有两个元素,就没必要递归if ((len - begin) <= 2){if ((len - begin) <= 1)return;if (arr[begin] > arr[begin + 1]){data = arr[begin];arr[begin] = arr[begin + 1];arr[begin + 1] = data;}}//选定基准值,数组中数据划分到基准值两边int x = begin, y = len - 1, z = arr[begin];while (x < y){while ((x < y) && (arr[y] >= z)) y--;if(x < y) arr[x++] = arr[y];while ((x < y) && (arr[x] <= z)) x++;if (x < y) arr[y--] = arr[x];}arr[x] = z;quick_sort(arr, begin, x); //这里注意选定的基准值的排序位置是对的。quick_sort(arr, x+1, len);
}void main()
{int* arr = CreateArray(10000);//TEST_MY(selection_sort, arr, 10000);TEST_MY(quick_sort, arr, 10000);/*unguarded_insert_sort(arr, 0, 10000, 1);*///printf("data:%d, %d, %d, %d\r\n", arr[0], arr[1], arr[2], arr[3]);free(arr);return;
}
运行结果如下所示:

