递归和分治法解一系列经典算法

源代码在线查看: 快速排序递归算法.cpp

软件大小: 13 K
上传用户: zxj334
关键词: 递归 分治法 算法
下载地址: 免注册下载 普通下载 VIP

相关代码

				//快速排序递归算法
				
				#include 
				#include 
				#include 
				#define N 10
				
				int QKPass(int r[], int low, int high)
				{
					int k0,Pkey=r[low];
					r[0]=r[low];
					while(low					{
						while(low=Pkey) --high;
						k0=r[low];
						r[low]=r[high];
						r[high]=k0;
						while(low						k0=r[low];
						r[low]=r[high];
						r[high]=k0;
					} //while
					r[low]=r[0];
					return low;  //返回枢轴所在位置
				} //QKPass
				
				void QKSort(int r[], int s, int t)
				{
					//对记录序列L.r[s..t]进行快速排序
					if (s					{
						//长度大于1
						int pos=QKPass(r, s, t);
						//对 L.r[s..t] 进行一次划分
						QKSort(r, s, pos-1);
						//对低子序列递归排序, pos是枢轴位置
						QKSort(r, pos+1, t);  //对高子序列递归排序
					} //if
				} //QKSort
				
				void main()
				{
					srand(time(0));
					int i,r[N+1];
					for(i=1; i					QKSort(r, 1, N);
					for(i=1; i				}			

相关资源