您的位置:首页 > 其它

简单选择排序

2015-03-07 00:25 543 查看
  一、基本思想:每一趟循环遍历都从待排序的记录中选出关键字最小的记录,顺序的放在已排好序的子表的最后,直到所有的记录排序完毕。

  

  

  

  二、C 语言代码:

  


  三、算法分析

    时间复杂度:由算法代码可知,简单选择排序是由两重循环组成,对于 n 个排序记录而言,外层必须经历 n-1 次循环,而内层则必须经历 (n-1-i) 次循环,其中 0 ≦ i ≦ n-1,并且每一次比较如需要交换记录排序位置都必须移动记录三次才能达到目的。故对于简单选择排序而言:

      关键字比较和记录移动的最少次数是 (n-1)(n-i-1),其中 0 ≦ i ≦ n-1,算法的时间复杂度为 O(n²)。

      关键字比较和记录移动的最多次数为 (n-1)[3(n-i-1)],其中 0 ≦ i ≦ n-1,算法的时间复杂度为 O(n²)。

      关键字平均比较和记录移动次数为 (n-1)(n-i-1),其中 0 ≦ i ≦ n-1,算法的时间复杂度为 O(n²)。

    空间复杂度:由算法代码可知,所需的额外空间只有一个 tmp 变量,故简单选择排序算法空间复杂度为 O(1)。

  四、思考

    简单选择排序算法的思想非常简单,但是效率非常低下,实际工程中应用很少,请问该如何优化算法?

  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: