一、选择排序
选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。
二、程序实现
1.先是根据自己的思路写了下面的程序,后来发现和网上好多例子都不一样,元素交换的次数太多,很多是无意义的交换,还是把程序放在这儿做个参考,应该算是个不标准的选择排序。
#include<iostream>
using namespace std;
const int BUFFSIZE = 6;
void Selection_Sort(int Arr[]);
int main()
{
int Arr[BUFFSIZE] = { 5,4,89,10,7,100}; //待排序元素
Selection_Sort(Arr);
return 0;
}
// 选择排序
void Selection_Sort(int Arr[])
{
for (int i = 0; i < BUFFSIZE - 1; i++)
{
for (int j = i + 1; j < BUFFSIZE; j++)
{
if (Arr[i] < Arr[j]) // 将大的元素移到前面
{
int tmp = Arr[i];
Arr[i] = Arr[j];
Arr[j] = tmp;
}
}
}
//输出排序后的元素
for (int i = 0; i < BUFFSIZE; i++)
{
cout << Arr[i] << " ";
}
cout << endl;
}
- 这个应该是比较标准的选择排序算法,每一轮排序先是记住没排序的元素中最大的元素的索引,然后把它交换到前面来。
#include<iostream>
using namespace std;
const int BUFFSIZE = 6;
void Selection_Sort(int Arr[]);
int main()
{
int Arr[BUFFSIZE] = { 5,4,89,10,7,100}; //待排序元素
Selection_Sort(Arr);
return 0;
}
// 选择排序,从大到小排序
void Selection_Sort(int Arr[])
{
for (int i = 0; i < BUFFSIZE-1 ; i++)
{
int index = i;
for (int j = i + 1; j < BUFFSIZE; j++)
{
if (Arr[index] < Arr[j])
{
index = j; //记录待排序元素中最大值的索引
}
}
if (i != index) // 将最大值移到前面
{
int tmp = Arr[i];
Arr[i] = Arr[index];
Arr[index] = tmp;
}
}
//输出排序后的元素
for (int i = 0; i < BUFFSIZE; i++)
{
cout << Arr[i] << " ";
}
cout << endl;
}