zoukankan      html  css  js  c++  java
  • 选择排序

    参考:

      《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 }

    截图:

  • 相关阅读:
    C++学习总结 复习篇2
    C++ 学习总结 复习篇
    Git 安装与使用
    前两周工作总结
    [bzoj1033] [ZJOI2008]杀蚂蚁antbuster
    [bzoj1031] [JSOI2007]字符加密Cipher
    [bzoj1030] [JSOI2007]文本生成器
    [bzoj1029] [JSOI2007]建筑抢修
    [bzoj1028] [JSOI2007]麻将
    [bzoj1026] [SCOI2009]windy数
  • 原文地址:https://www.cnblogs.com/shanyu20/p/10935327.html
Copyright © 2011-2022 走看看