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

    最坏时间复杂度,最佳时间复杂度,平均时间复杂度都是O(n^2)

    相比冒泡排序的优势是 每次扫描只保存索引,并不交换,节省了时间。但是冒泡排序可以设置标志位提前结束排序,较于选择排序也节省了时间。

    一次性放到终态位置:是

    稳定性:稳定;前提是 if ( a[ j ] >= a[ k ] )   k = j;  而不是 if ( a[ j ] >=a[ k ] )   k = j;

     1 #include"头文件.h"
     2 void SelectSort(int *a, int len) {
     3     if (a == null || len < 1)
     4         return;
     5     int k;//保存最大元素的索引
     6     int temp;//swap两个变量的临时变量
     7     for (int i = len - 1; i >= 0; --i) {
     8         k = 0;
     9         for (int j = 0; j <= i; ++j) {
    10             if (a[j] > a[k])
    11                 k = j;
    12         }
    13         temp = a[k];
    14         a[k] = a[i];
    15         a[i] = temp;
    16     }
    17 }
    18 int main() {
    19     int a[100];
    20     for (int i = 0; i < 100; ++i) {
    21         a[i] = 1 + rand() % 500;
    22     }
    23     printf("排序前的数组:
    ");
    24     for (int i = 0; i < 100; ++i) {
    25         printf("%4d ", a[i]);
    26         if ((i + 1) % 10 == 0)
    27             printf("
    ");
    28     }
    29     printf("
    ");
    30     printf("排序后的数组:
    ");
    31     SelectSort(a, 100);
    32     for (int i = 0; i < 100; ++i) {
    33         printf("%4d ", a[i]);
    34         if ((i+1) % 10 == 0)
    35             printf("
    ");
    36     }
    37     printf("
    ");
    38     system("pause");
    39     return 0;
    40 }

  • 相关阅读:
    vim 使用总结
    C语言中的条件编译
    getopt函数
    Linux 命令使用总结
    vim ctags cscope
    shell 定时处理
    shell 脚本中的标准输出
    ubuntu mail 命令发送邮件
    shell 编程中的特殊字符的处理
    system v 消息队列
  • 原文地址:https://www.cnblogs.com/joyeehe/p/7861554.html
Copyright © 2011-2022 走看看