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

    在没看课本之前,尝试着按照自己的理解写出我所任务的快速排序法。结果基本跟书上的一样。就是平白的多了好多次交换。

     1 #include <stdio.h>
     2 
     3 void SelectSort(int r[], int n)
     4 {
     5     int i, j, k, temp;
     6     for(i = 0; i < n - 1; i++)
     7     {
     8         k = i;
     9         for(j = i+1; j < n; j++)
    10         {
    11             if(r[j] < r[k])
    12                 k = j;
    13         }
    14         if(i != k) // 避免当a[i] 与 a[k]相等时多一次交换
    15         {
    16             temp = r[i];
    17             r[i] = r[k];
    18             r[k] = temp;
    19         }
    20     }
    21 }
    22 
    23 void print(int r[], int n)
    24 {
    25     int i;
    26     for(i = 0; i < n; i++)
    27         printf("%d ", r[i]);
    28     puts("
    ");
    29 }
    30 
    31 int main()
    32 {
    33     int a[10] = {3, 1, 5, 2, 7, 8, 9, 4, 6, 0};
    34     printf("before sort:
    ");
    35     print(a, 10);
    36     SelectSort(a, 10);
    37     printf("sort after:
    ");
    38     print(a, 10);
    39     return 0;
    40 }

    选择排序就是每趟选择一个最小的数,然后跟前面的数交换。而我自己做的是只要发现比第一个数小的就交换,浪费了些资源。

    选择排序的时间复杂度O(n^2)

  • 相关阅读:
    台阶问题,100层台阶,1,2,3步组合走完。一种有几种组合?
    idea 导入gitlab项目
    查找学生信息
    谁是你潜在的朋友
    Sort
    统计同成绩学生人数
    打印日期
    今年的第几天?
    DayOfWeek
    日期差值
  • 原文地址:https://www.cnblogs.com/hello-lijj/p/7247410.html
Copyright © 2011-2022 走看看