码迷,mamicode.com
首页 > 编程语言 > 详细

选择排序法(C语言)

时间:2019-12-07 23:28:12      阅读:128      评论:0      收藏:0      [点我收藏+]

标签:算法   swa   amp   getch   clu   交换   选择   注意   i++   

基本思路

在每一次的排序中选出最小(或最大)的数,将其放在数组最前端,然后在后面的数中重复此步骤,最终达到排序的目的.

算法描述

将存于数组首位数与后面的数依次比较,将其中的较小的数放到数组放到数组首位
将除存于第二位的数视作首位,重复第一步的操作
以此类推

代码实现

这里以从小到大排序为例

# include<stdio.h>
void swap(int *p, int *q)
{
    int temp;
    temp = *p;
    *p = *q;
    *q = temp;
}
int main()
{
    int i, j, n, t;
    int a[100];
    scanf("%d", &n);//输入要排序的数组元素个数
    getchar();
    for(i=0;i<n;i++)
    scanf("%d", &a[i]);//遍历数组
    for(i=0;i<n-1;i++)//从首位开始,注意:最后一个数由于已经被动和前面所有数进行了比较,故不需要再主动比较
    {
        int min=i;
        for(j=i+1;j<n;j++)//依次和后面的数比较找出最小的数
            if(a[j]<a[i])
            min=j;
        if(min != i)//如果最小的数不是首位,则交换
        swap(&a[min],&a[i]);
    }
    for(i=0;i<n;i++)
    printf("%d ", a[i]);
}

算法分析

选择排序是不稳定的,如:5 8 5 2这个数列,当第一个"5"与"2"和交换后,第一个"5"就到了第二个"5"后面

选择排序法(C语言)

标签:算法   swa   amp   getch   clu   交换   选择   注意   i++   

原文地址:https://www.cnblogs.com/Xloading/p/12003683.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!