首页 > 代码库 > c语言数据结构之 快速排序

c语言数据结构之 快速排序

编译器:VS2013

#include "stdafx.h"
#include<stdlib.h>

//函数声明

void QuickSort(int a[],int n); //快速排序(从小到大)
void QSort(int a[], int m, int n); //快速排序的递归调用
int Pratition(int a[], int m, int n); //快速单次排序

int main()
{
int i,n,a[100];
printf("请输入需要排序元素的个数:");
scanf_s("%d", &n);
printf("随机生成的数组为:");
for (i = 1; i <= n; i++)
{
a[i] = rand() % 100 + 1;
printf("%d ", a[i]);
}
a[i] = ‘\0‘;
printf("\n");

QuickSort(a,n);

}

//快速排序(从小到大)
void QuickSort(int a[], int n)
{
int i;
QSort(a, 1, n);
printf("\n快速排序后的结果(从小到大):");
for (i = 1; i <= n; i++)
printf("%d ", a[i]);
printf("\n\n");
}

//快速排序的递归调用
void QSort(int a[],int m,int n)
{
int i;
if (m < n)
{
i = Pratition(a,m,n);
QSort(a, m, i - 1);
QSort(a, i + 1, n);
}
}

//快速单次排序
int Pratition(int a[], int i,int j)
{
a[0] = a[i];
while (i < j)
{
while (i<j&&a[j]>a[0])
j--;
a[i] = a[j];
while (i<j&&a[i] < a[0])
i++;
a[j] = a[i];
}
a[i] = a[0];
return i;
}

结果

技术分享

c语言数据结构之 快速排序