C语言-快速排序法

#include   
#include   
  
//快速排序  
void quickSort();  
  
int main(int argc, const char * argv[])  
{  
    int num_really[11];  
    for (int i = 0; i < 11; i++) {  
        num_really[i] = arc4random() % (90 - 10 + 1) + 10;  
    }  
    for (int i = 0; i < 11; i++) {  
        printf("%d ", num_really[i]);  
    }  
    printf("\n");  
    quickSort(num_really, 0, 10);  
    for (int i = 0; i < 11; i++) {  
        printf("%d ", num_really[i]);  
    }  
    printf("\n");  
    return 0;  
}  
  
  
//快速排序  
void quickSort(int num[], int start, int end) {  
    int i = start;  
    int j = end;  
    //记录比较值  
    int k = num[start];  
    //记录上一步是什么  
    int past_step = 0;  
    while (i != j) {  
        //找比比较值大的数  
        if (past_step == 0) {  
            while (num[j] > k) {  
                j--;  
                if (j == i)  
                    break;  
            }  
            num[i] = num[j];  
            past_step = 1;  
        } else {  
            while (num[i] < k) {  
                i++;  
                if (i == j)  
                    break;  
            }  
            num[j] = num[i];  
            past_step = 0;  
        }  
    }  
    num[i] = k;  
    if (i > start)  
        quickSort(num, start, i);  
    if (i+1 < end)  
        quickSort(num, i+1, end);  
      
}  

你可能感兴趣的:(C语言-快速排序法)