遞迴 快速排序 快速排序

2021-10-03 20:35:30 字數 807 閱讀 6458

問題描述

用遞迴來實現快速排序(quick sort)演算法。快速排序演算法的基本思路是:假設要對乙個陣列a進行排序,且a[0] = x。首先對陣列中的元素進行調整,使x放在正確的位置上。同時,所有比x小的數都位於它的左邊,所有比x大的數都位於它的右邊。然後對於左、右兩段區域,遞迴地呼叫快速排序演算法來進行排序。

輸入格式:

輸入只有一行,包括若干個整數(不超過10個),以0結尾。

輸出格式:

輸出只有一行,即排序以後的結果(不包括末尾的0)。

樣例輸入

5 2 6 1 7 3 4 0

樣例輸出

1 2 3 4 5 6 7

#include

intpartition

(int a,

int left,

int right)

a[left]

=a[right]

;while

(left<=temp)

a[right]

=a[left];}

a[left]

=temp;

return left;

}void

quicksort

(int a,

int left,

int right)

}int

main()

else

}quicksort

(s,0

,count-1)

;for

(i=0

;i)return0;

}

排序 快速排序 遞迴

快速排序的遞迴寫法,總共寫了四種方法 兩個雙指標法 挖坑法 hoare法 快速排序的時間複雜度為o nlogn 表現為不穩定的演算法 快速排序的陣列在交換或者覆蓋的過程中,相同的數字可能會出現位置的變換 快排相當於二叉樹的前序遍歷 void swapargs int pa,int pb int ho...

快速排序 遞迴

因為最近時間問題,該部落格待完善 快速排序,時間複雜度 理想的情況是,每次劃分所選擇的中間數恰好將當前序列幾乎等分,經過log2n趟劃分 一次劃分演算法從兩頭交替搜尋,直到low和hight重合,因此一次劃分演算法的時間複雜度是o n 整個演算法的時間複雜度為o nlog2n 最壞情況 o n2 快...

快速排序 遞迴實現

快速排序演算法 用到了 分治法 遞迴演算法 package com.xiahui public class quicksort quicksort quicksort new quicksort quicksort.quicksort a,0,6 for int i 0 i a.length i p...