• 排序算法


    基本思路

    先默认未排序区首个元素为最小,然后从后面的元素中挑出最小的元素,与这个元素交换,直至循环完成。

    算法代码

     1 //简单的选择排序
     2 void SelectSort(int *arr, int n)
     3 {
     4     int i, j;
     5     int temp;
     6     int minIndex;
     7     for (i = 0; i < n - 1; i++) //做第i趟排序,共n-1趟,因为第n趟只剩一个一定是最大的
     8     {
     9         minIndex = i;
    10         for (j = i + 1; j < n; j++)
    11         {
    12             if (arr[j] < arr[minIndex])
    13                 minIndex = j;
    14         }
    15         if (minIndex != i) //后面有更小的元素
    16         {
    17             temp = arr[i];
    18             arr[i] = arr[minIndex];
    19             arr[minIndex] = temp;
    20         }
    21     }
    22 }

    算法分析

    从i个记录中挑选最小记录需要比较i-1次。

    第i(i=0~n-2)趟从n-i记录中挑选最小记录需要比较n-i-1。

    对 n 个记录进行简单选择排序,所需进行的关键字的比较次数 总计为:

     

    移动记录的次数,正序为最小值 0,反序为最大值3(n-1) 。

    简单选择排序的最好、最坏和平均时间复杂度为O(n2)

  • 相关阅读:
    数组
    基本类型与封装类
    类与对象以及引用以及内存
    (一)eclipse Dynamic web project 工程目录以及文件路径问题
    jdbc
    连接
    curl命令
    java annotation
    websocket
    Trie(前缀树)和ternary trie和binary search tree
  • 原文地址:https://www.cnblogs.com/WindSun/p/11360751.html
Copyright © 2020-2023  润新知