冒泡排序,快速排序、選擇排序及二分法查找思想回顧


回顧冒泡排序、快速排序,直接選擇排序以及遞歸思想。快速排序和二分查找都融入了分而治之的思想,一分再分,遞歸之。

1、冒泡排序

相鄰元素之間逐對兩兩比較,若不符合預期則先交換位置再繼續比較,如此,每次比較都能把最大或最小的元素放在預期位置,直到完成排序。

2、快速排序

1、准備工作:先選定一個參考值,設置兩個指針(設為i,j,分別指向數字序列的頭和尾)。

2、同時從數字序列的兩頭進行掃描對比,將大於參考值的數字都放於參考值的一側,小於參考值的數字置於另一側。直到i,j指向同一個位置,這個位置即為參考值的預期位置,設為m。

3、對大於參考值一側,令i=m+1,對小於參考值的一側,令j=m-1。再分別對參考值的兩側重復步驟1、2。

4、重復步驟1、2、3,直到i>j。

 

public static int getMiddle(int[] array, int i, int j)
{
  int key = array[i];
  while(i<j)
  {
  //從前向后掃描
    while (i<j && array[j]>key)
     {
      j--;
     }
  array[i] = array[j];
  //從后向前掃描
    while (i<j && array[i]<key)
    {
      i++;
    }
  array[j] = array[i];
  }

  array[j] = key;
  return j;
}
//遞歸的思想,反復划分,直到只剩一個元素。
public static void qSort(int[] array, int i, int j)
{
  if(i<j)
  {
    int middle = getMiddle(array, i, j);
    qSort(array, i, middle-1);
    qSort(array, middle+1, j);
  }

}

 

3.選擇排序

就像打擂台,把元素一個一個往擂台上擺,優勝劣汰,從而確定第一名,第二名,第三名。。。直到排序完成。

4、二分查找算法

要求,序列是有序的,思想與快速排序類似,也運用了分而治之。

記得應用遞歸時,return,否則會一直執行到return -1,結束,導致輸出始終為-1.

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM