数据结构与算法----->算法----->简单排序算法:冒泡、选择、插入排序

概述:

    

5.1冒泡排序算法

    

    

    

    冒泡排序的每一轮都选出剩下元素中的最大者放到了数组的最后位置,下一轮冒泡时就不用考虑这个元素了

       bubbleSort.java     P61

    

    

    

5.2选择排序算法

    排序结果:数组左侧是最小值,尾部是最大值

    算法思想:每一轮比较找出最小值,然后将其放在最左侧

    算法的时间复杂度:比较次数O(N2)     交换次数O(N)

5.3插入排序算法

    排序结果:将数组按照从小到大的顺序排列,数组尾部元素值最大

    算法思想:每轮循环插入一个数

          还是原来的无序数组,只是新加一个tmp存储待插入的数组元素

          待插入数组元素左侧的序列是有序的

          在待插入元素的左侧的有序序列中查找到待插入元素应该插入的位置key

          Array[key+1]array[待插入元素下标-1]之间的所有元素后移一位

          Array[key]=tmp

          开始新一轮的插入

    算法的时间复杂度:

           

          

          

       P73 insertionSort.java

5.4对象排序(如stu_arrstudent类型的数组元素按照关键字排序)

    • 排序函数写在StudentArray.java
    • 按照某关键字排序
    • 选定排序算法(选择、冒泡、插入排序算法)
    • 算法是一样的,只有参与比较的对象不同stu_arr[i].getName().compareToIgnoreCase(   )>0
    • 字符串的比较

      

P76   ObjectSort.java

 

5.5几种简单排序之间的比较

      

      

      也就是说可以就地完成排序,不需要另外开辟数组空间存储数组中数据。

 小结:

    

    

    

    

    

遗留问题:第三章的“编程作业”

学习的过程中总会得到一些心得体会,认真地将它们记录下来并分享给每一个愿意花费时间去阅读它们的人,然后意外地收获某个读者的评论,从而激发出新的感想,是一件十分令人欢快的事。如果你也在研习这方面的知识,欢迎加入到我们的队伍中来,和我们一起进步吧(^_^)
原文地址:https://www.cnblogs.com/lxrm/p/6440290.html