나는 c-99 스크립트에서 다음 quicksort를 사용하고 있습니다.c-99의 quicksort 사용
문제는 컴파일되지만 출력이없는 것입니다. 나는 1,2,3,4,5로 5,4,3,2,1을 정렬하려고 노력하고 있는데, 나는 아무것도 얻을 수 없다.
내가 잘못하고있는 것이 확실하지 않습니다.
이 내 코드
\\pick a pivot
\\make a temporary left and right list
\\filter items to left and to the right
\\put it all back into the array left and pivot
\\recurse right side
#include <time.h>
#include <stdlib.h>
void subquicksort(int array[], int start, int end){
int leng=end-start;
if (leng<=1){
return;
}
int pivot=array[start];
int leftlist[leng]; \\create temporary left and right list
int lindex=0;
int rightlist[leng];
int rindex=0;
for(int i=start + 1; i < leng; i++){
if(array[i]<pivot) {
leftlist[lindex++]=array[i];
}
else{
rightlist[rindex++]=array[i];
}
}
array[start + lindex]=pivot;
for(int i=start +1; i <leng; i++){
if (i<lindex){
array[start + i]=leftlist[i];
}
if(i==lindex){
continue;
}
if(i>lindex){
array[start + i]=rightlist[i-lindex-1];
}
}
subquicksort(array,start,start+lindex);
subquicksort(array,start+lindex+1,end);
}
void quicksort(int array[],int leng){
subquicksort(array,0,leng);
}
int main(){
int nums[] = {5,4,3,2,1};
quicksort(nums, 5); \\use the quicksort function and print out the values sorted
for(int i=0;i<6;i++){
printf("%d",nums[i]);
}
return 0;
}
사용 할 것을 * 표준 * (15.3 세)] (http://man7.org/linux/man-pages/man3/qsort.3.html). 숙제 인 경우 : 모든 경고 및 디버그 정보 ('gcc -Wall -Wextra -g')로 컴파일 한 다음 ** 디버거를 사용하십시오 ** ('gdb') –
코드를 포맷하십시오. –
예, 코드가 눈에 매우 어렵습니다. – LeatherFace