快速排序的兩種思路

2021-09-26 02:57:06 字數 1147 閱讀 9214

選取最左端(low)為基準值,以公升序為例:

從右向左(high-low)查詢到乙個小於基準值的元素,再從左向右查詢乙個大於基準值的元素,再將兩者相交換。

while(arr[j]>=temp&&low從右向左(high-low)查詢到乙個小於基準值的元素,將兩者相交換,再從左向右查詢乙個大於基準值的元素,再將兩者相交換。

while(arr[j]>=temp&&low

注意:選取不同的思路相應的函式結構以及返回值等細節**會有細微的差異,且大部分情況下第二種思路的交換次數要比第一種多。

下面給出二者的完整**:

#includevoid quicksort(int arr,int low,int high)

printf("\n");

*/while(arr[right]>=base && left#includevoid swap(int arr, int low, int high)

/*定位交換元素位置,並返回下一趟排序的最左端元素位置(即基準元素位置)*/

int location(int arr, int low, int high)

swap(arr, low, high);

/*printf("%d,%d\n",low,high);*/

/*for(int i=0 ; i<6 ;i++)

printf("\n");

*/while(low < high && arr[low] <= base)

swap(arr, low, high);

/* printf("%d,%d\n",low,high);*/

/*for(int i=0 ; i<6 ;i++)

printf("\n");*/}

/*printf("%d ,%d\n",low,arr[low]);*/

return low;

}void quicksort(int arr, int low, int high)

}int main()

quicksort(arr, 0, n-1);

for(j = 0; j < n; j ++)

return 0;

}

快速排序的兩種思路(C 實現)

includeusing namespace std int partition int array,int startindex,int endindex void quicksort int array,int startindex,int endindex 分治 雙邊迴圈法 int parti...

兩種快速排序

快排是一種基於交換的排序,氣泡排序 兩兩相鄰作比較,逆序則交換 也是基於交換的排序,快排運用了二分法的思想,每次找乙個哨兵,比哨兵小的放一邊,大的放一邊,這是完成了一趟快排。冒泡 for int i 0 ia j 1 快排一 void quicksort int left,int right if ...

快速排序的兩種實現

快速排序演算法是現在用的最廣的排序演算法,也是效率最高的。它有兩種實現方式,一種是定軸法,另外一種是挖坑法。這裡簡單介紹一下兩種實現方法的思想,並附上c 實現 一 定軸法 1.備份對軸 首記錄 2.取兩個指標left和right,初始值分別是序列的第二個元素和最後乙個元素,並且left right ...