1.快速排序,就是首先找乙個基準,記作a,並且將陣列中小於a的元素全部排在a的左邊,
並且將陣列中比a大的元素全部排在a的右邊 (文中提到的「小於」,「大於」可以自行定義)
經過這樣的排序,我們不用保證在a的左邊和右邊的元素維持著一種順序,只要全滿足小於a
和大於a即可。(這是我們下一步要進行的工作)
2.將a左邊的元素,以及a右邊的元素視作兩個新的陣列,執行1的操作,直到不可再劃分
貼上快排的函式**,自己寫的,目前還沒發現錯誤,用idea測試了一下.有錯誤再來改,但是快排
的實現(遞迴,迴圈,還有1中的找元素方式)不止一種方式。我採用的是遞迴方式
public static void quicksort(int array, int low, int high)
//跳出while迴圈時,l==h
array[l]=tmp;//調整基準數的位置
quicksort(array, low, l - 1);
quicksort(array, l + 1, high);
}
經過leetcode題目測試,發現這種方法不管正確與否,但是耗時比較長,經過分析,推薦使用下列**
public static void fastsort(int nums, int low, int high)
}nums[low] = nums[i];
nums[i] = tmp;
fastsort(nums, low, i - 1);
fastsort(nums, i + 1, high);
}
陣列排序 快速排序
陣列排序 快速排序 1 陣列排序之快速排序 一趟快速排序的演算法是 1 設定兩個變數i j,排序開始的時候 i 0,j n 1 2 以第乙個陣列元素作為關鍵資料,賦值給key,即 key a 0 3 從j開始向前搜尋,即由後開始向前搜尋 j j 1即j 找到第乙個小於key的值a j a i 與a ...
陣列快速排序
1.如果呼叫該方法時沒有使用引數,將按字母順序對陣列中的元素進行排序,也就是是按照字元編碼的順序進行排序。var arr 9 5,3 10,23 4,43 var newarr arr.sort console.log newarr 10,23,3,4,43,5,9 也就是會以首數字為準進行排序 字...
快速排序(QuickSort) 陣列
對於快速排序的具體介紹就不用贅述了。這裡記錄幾點要點。設定l0,r0為需排序陣列的起點終點,l,r為檢查到達的位置。選取陣列的首端 l0 或者尾端 r0 元素為基準元素q,如果是l0則從r0開始往前檢查,r0則從l0開始往後檢查,很顯然,這樣的話基準元素q始終位於l或者r位置,最後排序完成時,r l...