交换排序之“快速排序”算法的实现

代码如下:

#include <stdio.h>
#define DATA_ARRAY_SIZE 10
typedef int DataType;

void DisplayArray(DataType data[], int size)
{
    
    
    for(int i=0; i<size; i++) {
    
    
        printf("%d ", data[i]);
    }
    printf("\n");
    
    return;
}

void QuickSort(DataType src[], int left, int right);

int main()

{
    
    
    DataType srcData[DATA_ARRAY_SIZE] = {
    
    3,2,4,6,9,1,21,43,29,59};
    QuickSort(srcData, 0, DATA_ARRAY_SIZE-1);
    DisplayArray(srcData,DATA_ARRAY_SIZE);
    
    return 0;
}

void QuickSort(DataType src[], int left, int right)
{
    
    
    /* 快速排序的出口 */
    if(left >= right) {
    
    
        return;
    } 
    int i = left;
    int j = right;
    DataType key = src[i];
    while(i<j) {
    
    
        while((i<j) && (key >= src[j])) {
    
    
            j--; //从右侧扫描找到大于key的元素
        }
        src[i] = src[j];
        
        while((i<j) && (key <= src[i])) {
    
    
            i++; //从左侧扫描找到小于key的元素
        }
        src[j] = src[i];
    }
    src[i] = key; //完成轴点位置确定
    QuickSort(src, left, i-1);
    QuickSort(src, i+1, right);
}

猜你喜欢

转载自blog.csdn.net/m0_37546257/article/details/121070332