快速排序
来源:互联网 发布: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;}运行结果:
阅读全文
0 0
- 快速排序
- 快速排序
- 快速排序
- 快速排序!
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- kaldi005 -- 构图
- iOS学习笔记-072.CALayer02——transform属性
- Java数据结构与算法---二叉树
- Android 资源管理
- BZOJ-1833 [ZJOI2010]count 数字计数 数位DP
- 快速排序
- 垃圾收集机制——JavaScript
- java可变参数
- APP 微信支付,服务端处理
- GCC的-fno-builtin选项
- 七层中反射+配置文件的使用
- hashmap与hashtable区别
- Javascript回调(一):简述
- 字符串函数——strcpy 、strncpy 、strcat、 strncat、 strcmp 、strncmp、 memcpy、 memmove)