[問題] 關於quick_sort的問題
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
GCC
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
無
問題(Question):
排列完成後少了一個數字產生了一個不是在序列裡面的數
餵入的資料(Input):
{4, 10, 11, 5, 8, 3, 29, 22, 2, 21}
預期的正確結果(Expected Output):
{2, 3, 4, 5, 8, 10, 11, 21, 22, 29}
錯誤結果(Wrong Output):
排序前:4 10 11 5 8 3 29 22 2 21
排序後:134514384 29 22 21 11 10 8 5 4 3
程式碼(Code):(請善用置底文網頁, 記得排版)
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define MAX 10
#define SWAP(x,y) {int t; t = x; x = y; y = t;}
void quicksort(int[], int, int);
int main(void) {
int number[MAX] = {4, 10, 11, 5, 8, 3, 29, 22, 2, 21};
int i, num;
srand(time(NULL));
printf("排序前:");
for(i = 0; i < MAX; i++) {
//number[i] = rand() % 100;
printf("%d ", number[i]);
}
quicksort(number, 0, MAX);
printf("\n排序後:");
for(i = 0; i < MAX; i++) {
printf("%d ", number[i]);
}
printf("\n");
return 0;
}
void quicksort(int number[], int left, int right) {
int i;
int j = right;
if(left < right) {
for(i = right; i > left; i--) {
if(number[i] < number[left]) {
SWAP(number[i], number[j]);
j--;
}
}
SWAP(number[left], number[j]);
quicksort(number, left, j-1); // 對左邊進行遞迴
quicksort(number, j+1, right); // 對右邊進行遞迴
}
}
補充說明(Supplement):
請問版上各位,錯誤在哪裡,已經找很久都找不到錯誤!
快要崩潰了!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 60.251.56.250
→
02/23 18:56, , 1F
02/23 18:56, 1F
→
02/23 22:24, , 2F
02/23 22:24, 2F
→
02/24 09:28, , 3F
02/24 09:28, 3F
→
02/24 09:29, , 4F
02/24 09:29, 4F
→
02/24 09:30, , 5F
02/24 09:30, 5F
→
02/24 15:01, , 6F
02/24 15:01, 6F
→
02/24 17:06, , 7F
02/24 17:06, 7F
→
02/25 19:48, , 8F
02/25 19:48, 8F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章