冒泡排序和选择排序都是低级排序,效率比较低。低级排序最简单的是冒泡排序。
从当前未排序的整数中找一个最小的整数,将它放在已排序的整数数列列表的最后。
要点:选择排序选最小的,往左边选。
冒泡排序是选择最大的,而选择排序选择最小的,但是选择排序要相对冒泡排序要快,是因为冒泡排序中间有许多交换的操作,选择排序要找到最小然后进行交换。
#include<iostream>
using namespace std;
void SelectSort(int *list,const int n);
int main()
{
int x[] = {1,3,5,7,9,0,2,4,6,8};
SelectSort(x,10);
for(int k=0;k<10;k++)
cout<<x[k]<<" ";
cout<<endl;
system("pause");
return 0;
}
void SelectSort(int *list,const int n)
{
for(int i=0;i<n-1;i++) //最外边的循环是寻找最小的值的次数,可以是n次也可以是n-1次。
{
int min = i; //min用来做记号,开始时第一个最小
for(int j= i+1;j<n;j++)
{
//每一遍扫描都是从i+1开始扫描,如果我们发现一个最小的,每次扫描的时候没有排序。
if(list[j]<list[min])
min = j; //冒泡排序一般发生在该位置。
}
swap(list[i],list[min]);//把最小的放在最左边,0到i是已经排序的,i+1到n-1是未排序的,从未排序的里边找一个最小的放到左面
}
}