【排序算法介绍】
2014-04-14 21:23
85 查看
一些排序算法的总结 ---- 供自己参考
一、快速排序
1.简单介绍:
快速排序的是对冒泡排序的一种优化。一趟快速排序会将要排序的序列分割成两部分,一部分比指定值都要小,另一部分比指定的值都要大。然后递归的对两部分继续运用快速排序的算法。2.算法介绍:
假设需要排序的数组为Array。先取第0个值Array[0]作为关键字,然后将所有比关键字小的放到它前面,所有比关键字大的都放到它后面,至此,一趟快速排序就结束了。
设置两个变量i,j, i=0,j=N-1;
以数组第一个变量作为关键字key,key=Array[0];
从j开始向前搜索,找到第一个小于key的值Array[j],将Array[j]赋给Array[i];
从i开始向后搜索,找到第一个大于key的值Array[i],将Array[i]赋给Array[j];
重复c和d的动作,直到i=j。
3.算法程序
#include <iostream> #include <cstdlib> #include <ctime> // max number of array const int MAX_NUMBER = 10; // scope of array value const int MAX_VALUE = 100; void QuickSort(int array[], unsigned int size) { // check parameter if (size <= 1) { return; } // initialize flags int i = 0; int j = size - 1; int key = array[0]; // start loop until stop while (i < j) { // backward search for (; j > i; --j) { if (array[j] < key) { array[i] = array[j]; break; } } // forward search for (; i < j; ++i) { if (array[i] > key) { array[j] = array[i]; break; } } } // save the key value array[i] = key; // sort by recursive QuickSort(array, i); QuickSort(array + i + 1, size - i - 1); } int main(int argc, char **argv) { // get 10 numbers by random srand(time(NULL)); int array[MAX_NUMBER] = { 0 }; for (int i = 0; i < MAX_NUMBER; ++i) { array[i] = rand() % MAX_VALUE; } // sort array QuickSort(array, MAX_NUMBER); return 0; }
相关文章推荐
- 从零开始学算法:十种排序算法介绍(上)
- STL之排序算法SORT 详细介绍
- 从零开始学算法:十种排序算法介绍(下)
- 排序算法之冒泡排序的基本介绍和数组越界,以及交换2个变量的3种方法
- 从零开始学算法:十种排序算法介绍(上)
- 直接选择排序算法和冒泡排序算法的介绍及实现
- 从零开始学算法:十种排序算法介绍(中)
- 几种排序算法介绍与性能分析
- 排序算法-----冒泡排序简单介绍
- 各种排序算法介绍
- 算法--排序算法的介绍与总结(三)
- 从零开始学算法:十种排序算法介绍(上)
- 从零开始学算法:十种排序算法介绍(中)
- 从零开始学算法:十种排序算法介绍(下)
- (转)十种排序算法介绍
- 【排序算法】外部排序一 —— 外部排序介绍
- 从零开始学算法:十种排序算法介绍(中)
- 从零开始学算法:十种排序算法介绍(下)
- (转)从零开始学算法:十种排序算法介绍(上)
- 排序算法介绍