各种排序原理
冒泡排序:
冒泡排序(Bubble Sort)是一種簡單的排序算法,它通過依次比較兩個相鄰的的元素,看兩個元素是否滿足大小關系要求,如果不滿足則交換兩個元素。每一次冒泡會讓至少一個元素移動到它應該在的位置上,這樣n次冒泡就完成了n個數據的排序工作。這個算法的名字由來是因為越小的元素會經由交換慢慢“浮”到數列的頂端。
插入排序:
插入排序(Insertion Sort)的原理是:將數組中的數據分為兩個區間,已排序區間和未排序區間。初始已排序區間只有一個元素,就是數組的第一個元素。插入算法的核心思想是取未排序區間中的元素,在已排序區間中找到合適的插入位置將其插入,并保證已排序區間數據一直有序。重復這個過程,直到未排序區間中元素為空,算法結束。
選擇排序:
選擇排序(Selection Sort)的原理有點類似插入排序,也分已排序區間和未排序區間。但是選擇排序每次會從排序區間中找到最小的元素,將其放到已排序區間的末尾。
合并排序:
歸并排序(Merge Sort)。如果要排序一個數組,我們先把數組從中間分成前后兩部分,然后對前后兩部分分別排序,再將排好序的兩部分合并在一起,這樣整個數組就都有序了。歸并排序使用的是分治思想。
快速排序:
桶排序:
桶排序(Bucket Sort)顧名思義,會用到“桶”,桶我們可以將其想象成一個容器,核心思想是將要排序的數據分到幾個有序的桶里,每個桶里的數據再單獨進行排序。桶內排完序之后,再把每個桶里的數據按照順序依次取出,組成的序列就是有序的了,換句話說:桶排序是將待排序集合中處于同一個值域的元素存入同一個桶中,也就是根據元素值特性將集合拆分為多個區域,則拆分后形成的多個桶,從值域上看是處于有序狀態的。對每個桶中元素進行排序,則所有桶中元素構成的集合是已排序的。
計數排序:
總結
- 上一篇: Java中ArrayList最大容量为什
- 下一篇: java.lang.Math