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

基本思想

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

操作方法

  • 第一趟,从n 个记录中找出关键码最小的记录与第一个记录交换;
  • 第二趟,从第二个记录开始的n-1个记录中再选出关键码最小的记录与第二个记录交换;
  • 以此类推…..
  • 直到整个序列按关键码有序。

代码

#include

//简单选择排序 
void selectSort(int r[],int n){
    int min;
    int i,j,temp;
    for(i=0;imin = i; //初始化本轮最小元素的位置 
        for(j=i+1;jif(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"%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;
} 

执行结果

八大排序算法-简单选择排序_第1张图片

你可能感兴趣的:(数据结构/算法,排序,排序算法,简单选择排序)