排序-简单选择排序

来源:互联网 发布:语音模拟软件 编辑:程序博客网 时间:2024/05/22 15:39

简单选择排序
算法思想:
设待排序的记录存放在数组a[]中,数组长度为n。通过n-1趟排序,将a变成一个有序的数组。
(1)第一趟从a[0]开始,通过n-1次比较,从n-1个关键字中找出最小的记录,记做a[k],将a[0]和a[k]交换。
(2)第二趟从a[1]开始,通过n-2次比较,从n-2个关键字中找出最小的记录,记做a[k],将a[1]和a[k]交换。
(3)第i趟从a[i-1]开始,通过n-i+1次比较,从n-i个关键字中找出最小的记录,记做a[k],将a[i]和a[k]交换。
(4)经过n-1趟,排序完成

具体代码实现如下:

#include <iostream>using namespace std;//算法关键  每趟排序结果找最小关键字,然后每一趟把每一个关键字放到一个最终的位置上void sort(int a[],int size){    int k;    int i;    for( i=0;i<size-1;i++){        k=i;        for(int j=i+1;j<size;j++){            if(a[j]<a[k])                k=j;        }        //交换a[k]和a[i]        if(k!=i){            int temp=a[i];            a[i]=a[k];            a[k]=temp;        }        //输出每趟的排序结果        cout<<"第"<<i+1<<"趟排序结果:";        for(int i=0;i<size;i++){            cout<<a[i]<<" ";        }        cout<<endl;    }}int main(){    int a[8]={40,36,64,90,49,19,25,66};    sort(a,8);    cout<<"简单选择排序后的结果:"<<endl;    for(int i=0;i<8;i++)        cout<<a[i]<<" ";    return 0;}

测试结果如下:
这里写图片描述