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;
    			}
    		}
    
    	}
    }
    
  • 相关阅读:
    对MVC HtmlHepler控件扩展(转载)
    通过源代码研究ASP.NET MVC中的Controller和View(一)(转载)
    rasmol使用方法
    经典笑话
    直线回归的概念
    众数
    Python ImportError: No module named Tkinter
    小干扰RNA
    complementary DNA, cDNA
    反义RNA
  • 原文地址:https://www.cnblogs.com/CCCrunner/p/11781674.html
Copyright © 2011-2022 走看看