[ 经典算法案例 ] 快速排序算法
快速排序算法
C语言
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#define NUM 10
void QuickSort(int num[], int head, int tail)
{
int temp;
int pivot = head;
int i,j;
// 一次划分,从 head + 1 开始,将比枢轴元素小的元素移动到枢轴之前。
for (i = head + 1; i <= tail; i++)
{
if (num[i] < num[pivot])
{
temp = num[i];
for (j = i - 1; j >= pivot; j--)
{
num[j + 1] = num[j];
}
num[pivot++] = temp;
}
}
//一次划分之后,将分成的两个序列分别进行快速排序。
if (head != pivot && head != pivot - 1)
{
QuickSort(num, head, pivot - 1);
}
if (pivot != tail && pivot + 1 != tail)
{
QuickSort(num, pivot + 1, tail);
}
}
void sort(int num[], int n)
{
QuickSort(num, 0, n - 1);
}
void main()
{
int num[NUM];
int i;
for (i = 0; i < NUM; i++)
scanf("%d", num + i);
sort(num, NUM);
for (i = 0; i < NUM; i++)
printf("%-3d ", num[i]);
}
博主水平有限,难免疏漏有误,欢迎交流指正。
博客为作者原创,版权所有,保留一切权利。仅供学习和参考,转载必须注明博主ID和转载链接。
博客为作者原创,版权所有,保留一切权利。仅供学习和参考,转载必须注明博主ID和转载链接。