1. 程式人生 > >數組排序與查詢

數組排序與查詢

需要 思想 arrays類 quic 排序 得到 改進 uic 直觀

  1. 選擇排序
  • 選擇排序(Selection Sort)是一種簡單直觀的排序算法。

  原理:每一趟從待排序的數據元素中選擇最小(或最大)的一個元素,順序排在已排好序列的最後,知道全部待排序的數據元素排完。

  1. 冒泡排序
  • 一維數組的冒泡排序算法。

  原理:對比相鄰的元素值,如果滿足就交換元素值。

  1. 快速排序
  • 快速排序(Quick Sort)是對冒泡排序的改進,其排序速度相對較快。

  原理:通過一趟排序將要排序的數據分割為獨立的兩部分,其中一部分的所有數據都比另一部分的所有數據都要小,然後再按此方法對這兩部分數據分別進行快速排序,整個過程可以遞歸進行,以此是整個詩句變為有序序列。

  假設要排序的數組是A[1]...A[N],首先任意選取一個數據(通常選第一個)作為關鍵數據,然後將所有比它小的數都放到它的前面,所有比他大的數據都放到他的後面,整個過程成為一趟快速排序,遞歸調用此過程,即可實現數組的快速排序。

  1. 直接插入排序
  • 一維數組的冒泡排序算法。

  插入排序是將一個記錄插入到有序數列中,使得到的新的數列仍然有序。插入排序的思想是,將n個有序數存放在數組a中,要插入的數為x,首先確定x插在數組中的位置p,數組中p之後的元素都向後移一個位置,空出a(p),將x放入a(p),這樣既可實現插入後數列仍然有序。

  什麽是排序算法的空間復雜度?

    排序算法的空間復雜度是指排序算法運行所需要的額外消耗存儲空間,一般使用O()來表示,如直接插入排序法的空間復雜度為O(1).

  • 使用sort方法對數組進行排序

  Java中Arrays類提供了一個sort()方法。有很多重載格式,可以接收任意類型的數組並執行不同類型的排序。

  • 反轉數組中元素順序

  反轉數組是對數組兩邊的元素進行替換,所以只需要循環數組長度的半數。

ArrayList可看做是動態數組。

數組排序與查詢