简单常用之快速排序

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>
#include<stdlib.h>

int a[101], n;//定义全局变量,这两个变量需要在子函数中使用

void quicksort(int left, int right)
{             
    int i, j, t, temp;
    if (left>right)
        return;
    temp = a[left]; //temp中存的就是基准数
    i = left;
    j = right;
    while (i != j)
    {
        //先从右往左找
        while (a[j] >= temp && i<j)
            j--;
        //再从左往右找
        while (a[i] <= temp && i<j)
            i++;
        //交换两个数在数组中的位置
        if (i<j)//当哨兵i和哨兵j没有相遇时
        {
            t = a[i];
            a[i] = a[j];
            a[j] = t;
        }
    }
    //最终将基准数归位
    a[left] = a[i];
    a[i] = temp;
    quicksort(left, i - 1);//继续处理左边的,递归的过程
    quicksort(i + 1, right);//继续处理右边的
}

int main()
{
    int i, j, t;
    //读入n个数据
    printf("请输入需要排序的数据个数:");
    scanf("%d", &n);
    printf("请输入你要进行排序的数据:");
    for (i = 1; i <= n; i++)
        scanf("%d", &a[i]);
    quicksort(1, n); //快速排序调用
    //输出排序后的结果
    printf("排序后的数据结果为:");
    for (i = 1; i <= n; i++)
        printf("%d ", a[i]);
    printf("\n");
    system("pause");
    return 0;
}


你可能感兴趣的:(快速排序)