[ 经典算法案例 ] 快速排序算法

快速排序算法

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]);
}
posted @ 2020-12-01 12:34  绎丶江忆南  阅读(146)  评论(0编辑  收藏  举报