zoukankan      html  css  js  c++  java
  • 快速排序非递归算法

    #define MaxN 1000
    typedef int keytype;
    void QUICKSORT(keytype K[],int n){
    
    	int i,j,left,right,pos=-1;
    	int buf[MaxN][2];//数组buf用以保存下一趟快拍的起始和末尾位置
    	keytype temp;
    	while(1){/*K[left]为分界元素*/
    		i = left;
    		j = right;
    		while(1){ //每一次排序从这里开始
    			do i++; while(i!= right && K[i]<K[left]);
    			do j--; while(j!= left && K[j]>K[left]);
    			if (i<j)
    			{
    				temp = K[i];
    				K[i] = K[j];
    				K[j] = temp; //以上三条交换K[i]与K[j]的内容
    			}else{
    				break;
    			}
    		}
    		temp = K[left];
    		K[left] = K[i];
    		K[i] = temp; //交换K[left]与K[i]的内容
    		if (j+1>=right && j-1<=left)//被分成两部分都不足两个元素
    		{
    			if (pos == -1)
    			{
    				break; //保存排序首,尾位置的数组为空,排序结束
    			}
    			left = buf[pos][0];//获取新的排序范围的起始位置
    			right = buf[pos--][1];//获取新的排序范围的末尾位置
    		}else{
    			if (j+1<right && j-1 > left)//若前后两部分都超过一个元素
    			{
    				buf[++pos][0] = j+1;
    				buf[pos][1] = right; //保存排序后边部分的首尾位置
    				right = j-1;
    			}
    			else if (j+1>=right)//若只有被分成的前部分只有一个元素
    			{
    				right = j-1;
    			}else{ //若只有被分成的后部分只有一个元素
    				left = j+1;
    			}
    		}
    
    	}
    }
    
  • 相关阅读:
    Spring shiro 初次使用小结
    Spring data Redis
    Redis 学习相关的网站
    Spring依赖注入 — util命名空间配置
    添加至数据库的中文显示问号
    freemarker的classic_compatible设置,解决报空错误
    HTTP协议
    Maven添加本地Jar包
    java中的字符串分割函数
    读取文件方法大全
  • 原文地址:https://www.cnblogs.com/CCCrunner/p/11781674.html
Copyright © 2011-2022 走看看