快速排序

来源:互联网 发布:centos keepalived nfs 编辑:程序博客网 时间:2024/06/05 05:39
算法原理:取最左边的元素作为一个基值base,将数组分为大于base的区间和小于base的区间,利用递归算法直到排序完成。下面是用c语言实现的产生随机数的算法。
#include<stdio.h>#include<stdlib.h>#include<string.h>#include<time.h>#define ARRAYLEN 10int Division(int a[], int left, int right){    int base = a[left];   //基准元素    while (left < right){        while (left < right && a[right] > base){            --right;        }        a[left] = a[right];        while (left < right && a[left] < base){            ++left;        }        a[right] = a[left];    }    a[left] = base;    return left;}void QuickSort(int a[], int left, int right){    int i;    if (left < right){        i = Division(a, left, right);        QuickSort(a, left, i - 1);        QuickSort(a, i + 1, right);    }}void  printArr(int arr[], int n){    for (int i = 0; i < n; i++){        printf(" %3d", arr[i]);    }}int main(){    srand(time(NULL));  //初始化随机种子    int a[ARRAYLEN];    for (int i = 0; i < ARRAYLEN; i++){        a[i] = rand() % 99 + 1; //产生1≤a[i]<100的随机数    }    printf("原始数据为:\n");    printArr(a, ARRAYLEN);    printf("\n");    QuickSort(a, 0, ARRAYLEN - 1);    printf("快排之后数据为:\n");    printArr(a, ARRAYLEN);    printf("\n");     system("pause");    return 0;}运行结果:

这里写图片描述

原创粉丝点击