One-day-one-program(6)之快速排序
来源:互联网 发布:龙霸网络电视 编辑:程序博客网 时间:2024/05/16 16:57
基本思想:
任取待排序序列中的某个元素作为基准(一般取第一个元素),将待排序元素分为左右两个子表,左子表中元素的关键字值小于基准元素的关键字值,右子表中的关键字则大于或等于基准元素的关键字值,然后分别对两个子表继续进行划分,直至每一个子表只有一个元素或空为止。最后得到的便是有序序列。
#include<stdio.h>#define MAXSIZE 100int Partition(int R[],int low,int high)//一趟划分算法{//以R[low]为支点int i,j;i=low;j=high;R[0]=R[low];while(i<j){while((R[j]>=R[0])&&(i<j))j--;if(i<j){R[i]=R[j];i++;}while((R[i]<=R[0])&&(i<j))i++;if(i<j){R[j]=R[i];j--;}}R[i]=R[0];return i;}void Quick_Sort(int R[],int low,int high)//递归算法{int i;if(low<high){i=Partition(R,low,high);Quick_Sort(R,low,i-1);Quick_Sort(R,i+1,high);}}void main(){int R[MAXSIZE];int n;int k;printf("请输入你要排序的数的个数:\n");scanf("%d",&n);printf("请输入你要排序的数:\n");for(k=1;k<=n;k++){scanf("%d",&R[k]);}printf("用快速排序方法所得结果为:\n");Quick_Sort(R,1,n);for(k=1;k<=n;k++){printf("%d\n",R[k]);}}
0 0
- One-day-one-program(6)之快速排序
- One-day-one-program(5)之冒泡排序
- One-day-one-program(1)之顺序表的实现
- One-day-one-program(4)之链表的实现
- One-day-one-program(7)之顺序栈的实现
- One Day One Step 之全错位排序
- One-day-one-program(2)之1至100之间的素数的求法
- One-day-one-program(3)之统计字符串中不同字母的个数
- One-day-one-program(8)之统计字符串中子串的个数
- One Day One Step 之 nothing
- One Day One Step 之大数阶乘
- One Day One Step 之Milking Cows
- One Day One Step 之Palindromic Squares
- One Day One Step 之Dual Palindromes
- One day, One week!
- O..One..One...Day
- O..One..One...Day
- One day
- 宣告回归~
- 每天读一下这七句话
- javascript的window.onload方法使用
- myeclipse快捷键1
- java 删除服务器上的图片
- One-day-one-program(6)之快速排序
- Java开发中的23种设计模式详解
- html页面 四面有空白
- 体验常成员函数
- 素数算法
- java.lang.NumberFormatException: null
- 如何让软文推广效果最大化
- TCP连接、Http连接与Socket连接
- 南阳理工OJ_题目50 爱摘苹果的小明