快速排序的簡潔寫法

2021-07-13 16:55:49 字數 1037 閱讀 7973

個人總結的兩種寫法,比較傾向於partition1, 乙個邊界畢竟比兩個邊界好控制。此處**基於c++, 其實也就是用了個vector而已,隨便改改其他語言都可以。

好多寫法都可以滿足普通情況,但不滿足特殊用例測試:1,1,1,3這種。

共享。

#include "stdafx.h"

#include "iostream"

#include

using

namespace

std;

int main()

; vector

&nums = arr;

int n = nums.size();

nums = quicksort(nums, 0, n - 1);

cout

<< "sorted array: \n"

<< endl;

printarray(nums, n);

return0;}

void printarray(vector

& nums, int size)

void swap(vector

& nums, int a, int b)

int partition1(vector

& nums, int begin, int end)

j++;

}swap(nums, i, end);

return i;

}int partition2(vector

& nums, int begin, int end)

while (nums[j] >= pivot && j > i)

if (i >= j)

swap(nums, i, j);

}swap(nums, i, end);

return i;

}vector

& quicksort(vector

& nums, int begin, int end)

return nums;

}

快速排序的寫法

面試中乙個頻率極高的問題就是要手寫快速排序,實際上涉及下標變換的 極其容易寫錯,基本上涉及整數下標操作的問題都算是難度中等偏上的了。對於一些經典問題,我們要時不時的去練習,這裡給出演算法導論上的和stl中實現的快速排序的兩種不同寫法。template size t partition t a,siz...

快速排序的遞迴寫法

快速排序 遞迴 遞迴思想 單趟來說,begin找比key大的,end找比key小的,當各自都找到的時候,若begin比end小,則交換兩個資料,然後繼續找,當再找到的時候,如果 begin比end大,則比較a begin 和key的值,若a begin 大於key,說明 a begin 的位置應該是...

ViewHolder模式簡潔寫法

參考 在安卓中 自定義adapter時,使用viewholder可快取每個item的view,減少一些不必要的操作,提高效能。在網上看到一種比較簡潔的寫法,避免每個自定義的adapter定義 viewholder實體類。importandroid.util.sparsearray importand...