您的位置:首页 > 其它

八大排序算法-简单选择排序

2015-07-25 20:19 141 查看

基本思想

通过下标位置减少交换次数,在要排序的一组数中,选出最小(或者最大)的一个数与第1个位置的数交换;然后在剩下的数当中再找最小(或者最大)的与第2个位置的数交换,依次类推,直到第n-1个元素(倒数第二个数)和第n个元素(最后一个数)比较为止。

操作方法

第一趟,从n 个记录中找出关键码最小的记录与第一个记录交换;

第二趟,从第二个记录开始的n-1个记录中再选出关键码最小的记录与第二个记录交换;

以此类推…..

直到整个序列按关键码有序。



代码

#include<stdio.h>

//简单选择排序 
void selectSort(int r[],int n){
    int min;
    int i,j,temp;
    for(i=0;i<n;i++){
        min = i; //初始化本轮最小元素的位置 
        for(j=i+1;j<n;j++){
            if(r[min]>r[j]){
                min = j; //找到最小元素的下标 
            }
        }
        if(i != min){  //如果发生了改变 
            temp = r[i];
            r[i] = r[min];
            r[min] = temp;
        }
    }
}
//打印 
void print(int r[],int n){
    int i;
    for(i=0;i<n;i++){
        printf("%3d",r[i]);
    }
    printf("\n");
}

int main(){
    int a[8] = {3,1,5,7,2,4,9,6};
    int i;
    printf("排序前:\n");
    print(a,8);
    printf("简单选择排序后:\n");
    selectSort(a,8);
    print(a,8);

    return 0;
}


执行结果

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: