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;
    //	}
    
    




  • 相关阅读:
    leetcode 350. Intersection of Two Arrays II
    leetcode 278. First Bad Version
    leetcode 34. Find First and Last Position of Element in Sorted Array
    leetcode 54. Spiral Matrix
    leetcode 59. Spiral Matrix II
    leetcode 44. Wildcard Matching
    leetcode 10. Regular Expression Matching(正则表达式匹配)
    leetcode 174. Dungeon Game (地下城游戏)
    leetcode 36. Valid Sudoku
    Angular Elements
  • 原文地址:https://www.cnblogs.com/brucemengbm/p/7115552.html
Copyright © 2011-2022 走看看