• 选择排序


    参考:

      《linux c编程一站式学习》的习题11.1

    思想:

      第一次从数组a[0,...,LEN-1]中找出最小元素交换到a[0]的位置,第二次从数组a[1,...,LEN-1]中找出最小元素交换到a[1]的位置,依次类推。

    code:

     1 #include <stdio.h>
     2 
     3 #define LEN 5
     4 
     5 int testData[LEN] = {10, 5, 2, 4, 7};
     6 
     7 void swap(int *a, int *b)
     8 {//交换
     9     int temp;
    10     temp = *a;
    11     *a = *b;
    12     *b = temp;
    13 }
    14 
    15 void select_sort(void)
    16 {//从小到大排序,下标0的位置保存最小值
    17     int i, j;
    18     int min_val;  //保存最小值
    19     int min_num;  //保存最小值的下标
    20     for(i=0; i<LEN-1; i++){
    21         printf("%d, %d, %d, %d, %d
    ", testData[0], testData[1], testData[2], testData[3], testData[4]);
    22         min_val = testData[i];
    23         min_num = i;
    24         for(j=i+1; j<LEN; j++){ //求取剩余数字的最小值
    25             if(min_val > testData[j]){
    26                 min_val = testData[j];
    27                 min_num = j;
    28             }
    29         }
    30         if(min_num != i){//最小值不在当前位置,需要交换
    31             swap(&testData[i], &testData[min_num]);
    32         }
    33     }
    34     printf("%d, %d, %d, %d, %d
    ", testData[0], testData[1], testData[2], testData[3], testData[4]);
    35 }
    36 
    37 int main(int argc, char *argv[])
    38 {
    39     select_sort();
    40     return 0;
    41 }

    截图:

  • 相关阅读:
    编程语言
    MySQL之常用函数
    Java常用工具类
    数据结构
    Java对接SAP平台接口
    Maven项目依赖管理工具
    Java设计模式--抽象工厂
    Java基础--抽象类与接口
    Java集合--ArrayList遍历删除元素
    Java注解(Annotation )--结合拦截器实现是否登录验证
  • 原文地址:https://www.cnblogs.com/shanyu20/p/10935327.html
Copyright © 2020-2023  润新知