C++实现各种选择排序(简单选择排序,堆排序)
Posted Wecccccccc
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++实现各种选择排序(简单选择排序,堆排序)相关的知识,希望对你有一定的参考价值。
简单选择排序:
代码如下:
#include <iostream>
using namespace std;
void SelectSort(int *a, int len)
{//数组下标从0开始
for (int i = 0; i < len; i++)
{
int k = i;
for (int j = i + 1; j < len; j++)
if (a[j] < a[k]) k = j;
if (k != i)
{
int temp = a[i];
a[i] = a[k];
a[k] = temp;
}
}
}
int main()
{
int a[] = { 21,3,24,24,23,42,4,235,27878,46 };
SelectSort(a, 10);
for (int i = 0; i < 10; i++) cout << a[i] << " ";
cout << endl;
return 0;
}
堆排序:
代码如下:
#include <iostream>
using namespace std;
void HeapAdjust(int *a, int s, int m)
{
int rc = a[s];
for (int i = 2 * s; i <= m; i *= 2)
{
if (i < m && a[i] < a[i + 1]) i++;
if (rc > a[i]) break;
a[s] = a[i];
s = i;
}
a[s] = rc;
}
void CreatHeap(int *a, int n)
{
for (int i = n / 2; i > 0; i--) HeapAdjust(a, i, n);
}
void HeapSort(int *a, int n)
{//数组下标从1开始
CreatHeap(a, n);
for (int i = n; i > 1; i--)
{
int temp = a[1];
a[1] = a[i];
a[i] = temp;
HeapAdjust(a, 1, i - 1);
}
}
int main()
{
int a[] = { 0,1314,23,5,35,234,2,4,24,124,214 };
HeapSort(a, 10);
for (int i = 1; i <= 10; i++) cout << a[i] << " ";
cout << endl;
return 0;
}
以上是关于C++实现各种选择排序(简单选择排序,堆排序)的主要内容,如果未能解决你的问题,请参考以下文章
C# 各种内部排序方法的实现(直接插入排序希尔排序冒泡排序快速排序直接选择排序堆排序归并排序基数排序)
C# 各种内部排序方法的实现(直接插入排序希尔排序冒泡排序快速排序直接选择排序堆排序归并排序基数排序)