zoukankan      html  css  js  c++  java
  • 高速排序之算法导论实现

    #include <iostream>
    using namespace std;
    int partition(int *a,int p,int r)
    {
    	int x=a[r];
    	int i=p-1;//note i important which is used for 
    				//storage the number smaller than flag x=a[r]
    	for (int j=p;j<r;j++)
    	{
    		if (a[j]<x)// if a[j] smaller than x=a[r],
    					//exchange a[i+1] and a[j]
    		{
    			i++;
    			int t=a[j];
    			a[j]=a[i];
    			a[i]=t;
    		}
    	}
    	int t=a[i+1];// i+1 is the a[r] final position
    				//  exchange a[r] and a[i+1]
    	a[i+1]=a[r];
    	a[r]=t;
    	return i+1; //return the a[r] final position i+1
    }
    void quicksort(int *a,int p,int r)
    {
    	if (p<r)//the position lower than the higher
    	{
    		int q=partition(a,p,r);//q is the a[r] final position
    						// depart the arry[p...q-1] and arry[q+1...r]
    		quicksort(a,p,q-1);
    		quicksort(a,q+1,r);
    	}
    }
    int main()
    {
    	int arry[]={3,2,1,4,5,6,9,8,7,0};
    	quicksort(arry,0,9);
    	for (int i=0;i<10;i++)
    		cout<<arry[i]<<" ";
    	cout<<endl;
    }
    


    
    import java.util.Scanner;
    
    public class QuickSort {
    
    	/**
    	 * @param args
    	 */
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		Scanner scanner=new Scanner(System.in);
    		int n=Integer.parseInt(scanner.next());
    		int a[]=new int[n];
    		for (int i = 0; i < a.length; i++) {
    			a[i]=Integer.parseInt(scanner.next());
    		}
    		quickSort(a, 0, n-1);
    		for (int i = 0; i < a.length; i++) {
    			System.out.print(a[i]+" ");
    		}
    	}
    	
    	public static void  quickSort(int a[], int p, int e) {
    		if (p<e) {
    			int q=partion(a, p, e);
    			quickSort(a, p, q-1);
    			quickSort(a, q+1, e);
    		}
    	}
    	public static int partion(int a[], int p, int e) {
    		int x=a[e];
    		int j=p-1;
    		for (int i = p; i < e; i++) {
    			if (a[i]<x) {
    				j++;
    				int t=a[i];
    				a[i]=a[j];
    				a[j]=t;
    			}
    		}
    		int t=a[j+1];
    		a[j+1]=a[e];
    		a[e]=t;
    		return j+1;
    	}
    }	
    //	public static <T> void  swap (T  a, T b) {
    //		T temp=b;
    //		b=a;
    //		a=temp;
    //	}
    
    




  • 相关阅读:
    CSpinButtonCtrl控件的使用
    JS基础语法
    JS
    层级,hover
    Html&Css
    定位
    制作静态网页
    查看trunk端口
    配置vlan trunk
    js日期的写法,获取girdviw的行数、提示信息、验证数量信息
  • 原文地址:https://www.cnblogs.com/brucemengbm/p/7115552.html
Copyright © 2011-2022 走看看