C语言_排序算法_选择排序法

选择排序法

  • 基本原理
    在每一步中选取最小(大)值来重新排列,从而达到排序的目的。
  • 排序过程
    1.首先通过n-1次比较,从n个数中找出最小(大)的,将它与第一个数交换–第一趟选择排序,结果最小(大)的数被安置在第一个元素位置上;
    2.再通过n-2次比较,从剩余的n-1个数中找出最小(大)的,将它与第二个数交换–第二趟选择排序;
    3.重复上述过程,共经过n-1趟排序后,排序结束。

具体代码如下:
此处例子是从小到大排序。

//选择排序(从小到大)
#include<stdio.h>
int main()
{
    
    
    int a[10]= {
    
    0,8,9,4,3,6,7,5,1,2};
    int i,j,k,t; //i作为数组下标,j作为找到最大值时所对应的下标,K用来保存此次循环中最小(大)值的下标 
    for(i=0; i<10; i++)
    {
    
    
        k=i;         //假设第一个数就是最小(大)的
        for(j=i+1; j<10; j++)
            if(a[j]<a[k]) //按照从小到大的顺序排列
                k=j; //K用来保存此次循环中最小(大)值的下标  
        if(k!=i)  //如果此次循环中的最小(大)值并非假设的最小(大)值,则交换。 
        {
    
    
            t=a[i];
            a[i]=a[k];
            a[k]=t;
        }
    }
    for(i=0; i<10; i++)
        printf("%d ",a[i]);
    return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_51366851/article/details/112987963