[問題] quicksort原地迴圈的寫法
開發平台(Platform): (Ex: Win10, Linux, ...)
win10
編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出)
gcc 4.8.1
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
no
問題(Question):
想要寫一個quicksort不用遞迴且不用另外開矩陣的寫法,
不過選pivot後第一次都拆成兩個小陣列結束後就不知道開如何做了。
餵入的資料(Input):
預期的正確結果(Expected Output):
錯誤結果(Wrong Output):
程式碼(Code):(請善用置底文網頁, 記得排版,禁止使用圖檔)
void swap(int *a, int *b){
int temp = *a;
*a = *b;
*b = temp;
}
void quicksort(int a[], int array_length){
int left_bound = 0, right_bound = array_length-1;
int right = right_bound, left = left_bound, pivot = (left+right)/2;
int i, j;
int new_left_bound, new_right_bound;
int pivot_zero, pivot_one;
while(left < right)
{
if(a[right] > a[pivot])
{
if (a[left] < a[pivot])
{
right--;
left++;
}
else right--;
}
else
{
if (a[left] < a[pivot]) left++;
else
{
swap(&a[left],&a[right]);
right--;
left++;
}
}
if(left == right)
{
new_left_bound = right+1;
new_right_bound = left;
left = left_bound;
right = new_right_bound;
pivot = (left+right)/2;
}
if(left == pivot)break;
printf("%d %d %d\n",right,left,pivot);
}
}
補充說明(Supplement):
感覺這種divide and conquer用迴圈做比較難,
網路上找的版本也幾乎都是遞迴的版本,
除了遞迴比較好寫外有其他原因嗎??
--
!!!!!!!!!!!!!簽名檔破740000點擊率啦!!!!!!!!!!!!!!!
Fw: [問卦] 電影:決勝21點的機率問題 https://goo.gl/2BpbB7 #1MfN3FgZ (joke)
→
07/22 16:41,
07/22 16:41
!!!!!!!!!!!!!!簽名檔破740000點擊率啦!!!!!!!!!!!!!!
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 39.9.136.149
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1545392640.A.7A6.html
→
12/21 20:00,
7年前
, 1F
12/21 20:00, 1F
→
12/21 22:41,
7年前
, 2F
12/21 22:41, 2F
→
12/21 23:39,
7年前
, 3F
12/21 23:39, 3F
→
12/21 23:40,
7年前
, 4F
12/21 23:40, 4F
→
12/21 23:43,
7年前
, 5F
12/21 23:43, 5F
→
12/21 23:44,
7年前
, 6F
12/21 23:44, 6F
→
12/21 23:45,
7年前
, 7F
12/21 23:45, 7F
→
12/21 23:46,
7年前
, 8F
12/21 23:46, 8F
→
12/21 23:49,
7年前
, 9F
12/21 23:49, 9F
→
12/21 23:49,
7年前
, 10F
12/21 23:49, 10F
→
12/21 23:49,
7年前
, 11F
12/21 23:49, 11F
→
12/21 23:49,
7年前
, 12F
12/21 23:49, 12F
→
12/21 23:50,
7年前
, 13F
12/21 23:50, 13F
→
12/22 00:04,
7年前
, 14F
12/22 00:04, 14F
→
12/22 04:25,
7年前
, 15F
12/22 04:25, 15F
→
12/22 09:41,
7年前
, 16F
12/22 09:41, 16F
→
12/22 09:42,
7年前
, 17F
12/22 09:42, 17F
→
12/22 10:40,
7年前
, 18F
12/22 10:40, 18F
→
12/22 10:40,
7年前
, 19F
12/22 10:40, 19F
推
12/22 16:19,
7年前
, 20F
12/22 16:19, 20F
推
12/22 23:55,
7年前
, 21F
12/22 23:55, 21F
→
12/22 23:55,
7年前
, 22F
12/22 23:55, 22F
→
12/23 00:00,
7年前
, 23F
12/23 00:00, 23F
→
12/23 22:50,
7年前
, 24F
12/23 22:50, 24F
→
12/23 22:50,
7年前
, 25F
12/23 22:50, 25F
→
12/23 23:10,
7年前
, 26F
12/23 23:10, 26F
→
12/23 23:10,
7年前
, 27F
12/23 23:10, 27F
→
12/23 23:52,
7年前
, 28F
12/23 23:52, 28F
→
12/23 23:54,
7年前
, 29F
12/23 23:54, 29F
→
12/24 02:32,
7年前
, 30F
12/24 02:32, 30F
→
12/24 02:34,
7年前
, 31F
12/24 02:34, 31F
→
12/24 09:17,
7年前
, 32F
12/24 09:17, 32F
→
12/24 09:25,
7年前
, 33F
12/24 09:25, 33F
推
12/24 13:40,
7年前
, 34F
12/24 13:40, 34F
→
12/24 13:41,
7年前
, 35F
12/24 13:41, 35F
→
12/24 13:41,
7年前
, 36F
12/24 13:41, 36F
→
12/24 13:42,
7年前
, 37F
12/24 13:42, 37F
→
12/24 13:42,
7年前
, 38F
12/24 13:42, 38F
→
12/24 14:22,
7年前
, 39F
12/24 14:22, 39F
→
12/24 14:22,
7年前
, 40F
12/24 14:22, 40F
→
12/24 15:01,
7年前
, 41F
12/24 15:01, 41F
→
12/24 15:02,
7年前
, 42F
12/24 15:02, 42F
→
12/24 15:03,
7年前
, 43F
12/24 15:03, 43F
→
12/24 15:03,
7年前
, 44F
12/24 15:03, 44F
→
12/24 15:14,
7年前
, 45F
12/24 15:14, 45F
→
12/24 15:16,
7年前
, 46F
12/24 15:16, 46F
→
12/24 15:16,
7年前
, 47F
12/24 15:16, 47F
→
12/24 15:37,
7年前
, 48F
12/24 15:37, 48F
→
12/24 16:26,
7年前
, 49F
12/24 16:26, 49F
→
12/24 16:27,
7年前
, 50F
12/24 16:27, 50F
→
12/24 16:27,
7年前
, 51F
12/24 16:27, 51F
→
12/24 16:30,
7年前
, 52F
12/24 16:30, 52F
→
12/24 16:31,
7年前
, 53F
12/24 16:31, 53F
→
12/24 16:32,
7年前
, 54F
12/24 16:32, 54F
→
12/24 16:32,
7年前
, 55F
12/24 16:32, 55F
→
12/24 23:19,
7年前
, 56F
12/24 23:19, 56F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章