选择排序
前面忘了选择排序,现在补上。
所谓选择排序指的是每次选择最小的元素进行调换位置。它的工作原理是:第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。以此类推,直到全部待排序的数据元素的个数为零。选择排序是不稳定的排序方法。https://baike.baidu.com/item/%E9%80%89%E6%8B%A9%E6%8E%92%E5%BA%8F/9762418?fr=aladdin
#include <iostream>
using namespace std;
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
void Seection_Sort(int A[], int N);
int ScanForMin(int A[], int i, int N);
void Swap(int *x, int *y);
void Selection_Sort(int A[], int N)
{
int minPosition;
for (int i = 0; i < N; i++)
{
minPosition = ScanForMin(A, i, N);
Swap(&A[i], &A[minPosition]);
}
}
int ScanForMin(int A[], int i, int len)
{
int temp = i;
for (int j = i+1; j < len; j++)
{
if ( A[j] < A[temp])
{
temp = j;
}
}
return temp;
}
void Swap(int *x, int *y)
{
int temp = 0;
temp = *x;
*x = *y;
*y = temp;
}
int main(int argc, char** argv)
{
int A[6] = {2, 5, 9, 7, 1, 4};
Selection_Sort(A, 6);
for (int i = 0; i < 6; i++)
{
cout << A[i] << " ";
}
cout << endl;
return 0;
}