您的位置:首页 > 其它

【排序算法介绍】

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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: