C++算法三:选择排序

冒泡排序和选择排序都是低级排序,效率比较低。低级排序最简单的是冒泡排序。
从当前未排序的整数中找一个最小的整数,将它放在已排序的整数数列列表的最后。
要点:选择排序选最小的,往左边选。
冒泡排序是选择最大的,而选择排序选择最小的,但是选择排序要相对冒泡排序要快,是因为冒泡排序中间有许多交换的操作,选择排序要找到最小然后进行交换。

#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是未排序的,从未排序的里边找一个最小的放到左面
    }

}

阅读更多
个人分类: 算法
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭