您的位置:首页 > 其它

排序算法

2015-10-28 15:22 253 查看

选择排序

简介:

  选择排序(Selection sort)是一种简单直观的排序算法。

基本思想:

  1、选择一个元素与其之后的元素进行比较,选出最小值。

  2、对剩下的元素重复第一步。

demo:

#include <iostream>
#include <algorithm>
using namespace std;

void Merge(int src[], int des[], int low, int mid, int high)
{
int lowIndex = low;
int midIndex = mid + 1;
int desIndex = low;

while ((lowIndex <= mid) && (midIndex <= high)) //选择大的元素放入
src[lowIndex] < src[midIndex] ? des[desIndex++] = src[lowIndex++] : des[desIndex++] = src[midIndex++];

while (lowIndex <= mid)                    //将剩下的元素放入
des[desIndex++] = src[lowIndex++];

while (midIndex <= high)
des[desIndex++] = src[midIndex++];

}

void Msort(int src[], int des[], int low, int high, int max)
{
if (low == high)
des[low] = src[low];
else
{
int mid = (low + high) >> 1;
int *space = (int *)malloc(sizeof(int)* max);

if (space != NULL)
{
Msort(src, space, low, mid, max);
Msort(src, space, mid + 1, high, max);
Merge(space, des, low, mid, high);
}
free(space);
}
}

int MergeSort(int array[], int len)
{
if (array == NULL)
return -1;

Msort(array, array, 0, len - 1, len);

return 0;
}

int main()
{
int array[] = { 52, 23, 80, 36, 68, 14 };

MergeSort(array, sizeof(array) / sizeof(*array));
for_each(begin(array), end(array), [](int data){cout << data << " "; });
system("pause");
}


View Code
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: