zoukankan      html  css  js  c++  java
  • 选择排序法(C语言)

    基本思路

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

    算法描述

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

    代码实现

    这里以从小到大排序为例

    # 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"后面

  • 相关阅读:
    游标和视图
    sql server 变量与集合运算
    sql server 流程控制
    sql server 基础查询和子查询
    数据库范式快速理解
    创建数据库与数据表
    SQL server 使用
    Android studio 下载依赖jar包慢
    java根据list数据通过接口姓名并填充
    【翻译】Promises/A+规范
  • 原文地址:https://www.cnblogs.com/pufan/p/12049691.html
Copyright © 2011-2022 走看看