zoukankan      html  css  js  c++  java
  • 1. 选择排序、插入排序、冒泡排序

    一、选择排序

    1. 基本思想

    第一次从R[0]~R[n-1]中选取最小值,与R[0]交换; 
    第二次从R[1]~R[n-1]中选取最小值,与R[1]交换;
    ….; 
    第 i 次从R[i-1]~R[n-1]中选取最小值,与R[i-1]交换;
    ….; 
    第n-1次从R[n-2]~R[n-1]中选取最小值,与R[n-2]交换。

    小结:每次从数组中挑出最小的元素,并按挑出来的顺序排列。

    二、插入排序

    1. 基本思想

    第一次:对下标 1 处的元素进行排序,保证数组[0,1]上的元素有序;

    第二次:对下标 2 处的元素进行排序,保证数组[0,2]上的元素有序;

    ….;

    第n-1次:对下标 n-1 处的元素进行排序,保证数组[0,n-1]上的元素有序。

    小结:每次从数组中挑出下一个元素,并与已被挑出的元素进行排序。

    三、冒泡排序

    1. 基本思想

    每趟进行如下过程:依次比较相邻的两个数,将小数放在前面,大数放在后面。

    第一趟比较完成后,最后一个数一定是数组中最大的一个数,所以第二趟比较的时候最后一个数不参与比较;

    第二趟比较完成后,倒数第二个数也一定是数组中第二大的数,所以第三趟比较的时候最后两个数不参与比较;

    ....;

    第n-1趟比较完成后,第二个数一定是数组中倒数第二大的数,而剩下的只有一个数了,故整个排序完成。

    四、余音绕梁

    1. 选择排序和插入排序的区别?

    选择排序是先挑选出最小的数(O(n)),再插入(O(1))。

    插入排序是先拿出(O(1)),再将其插入到有序数组中(O(n))。

    补:上述是两者每一趟排序的具体任务,而它们都要进行n-1趟,所以时间复杂度都为O(n2)。

    2. 冒泡排序的时间复杂度为O(n2)

  • 相关阅读:
    SpringRMI解析3-RmiServiceExporter逻辑细节
    SpringRMI解析2-RmiServiceExporter逻辑脉络
    SpringRMI解析1-使用示例
    SpringMVC解析5-DispatcherServlet逻辑细节
    SpringMVC解析4-DispatcherServlet逻辑脉络
    SpringMVC解析3-DispatcherServlet组件初始化
    SpringMVC解析2-ContextLoaderListener
    算法笔记_074:子集和问题(Java)
    算法笔记_073:哈密顿回路问题(Java)
    算法笔记_072:N皇后问题(Java)
  • 原文地址:https://www.cnblogs.com/xzxl/p/9579575.html
Copyright © 2011-2022 走看看