快速排序(C++实现)

参考博客: 算法排序之最常用的排序–快速排序(Quick Sort)

#include
using namespace std;


template<class E>
void quickSort(E * arr,int low ,int height){


    if(low>height){
        return;
    }
    //最左边的为准基数
    E i=low,j=height;   
    E mark=arr[low];
    while(i!=j){
        //从右侧找到一个比标记小的值
        while(arr[j]>=mark  &&  i//从左侧找到一个比标记大的值
        while(arr[i]<=mark    &&   i//交换找到的值,使左边小,右边大
        E temp=0;
        if(i//完成了一次交换      
    }//完成while循环,此时i=j

    //交换准基数和相遇值,即将中值归位  
    arr[low] = arr[i];
    arr[i] = mark;
    //将中值左侧的数据进行排序(递归)
    quickSort(arr,low, i - 1);
    //将中值右侧的数据进行排序(递归)
    quickSort(arr,i + 1, height);


}

int  main(){
    //10个元素的数组
    int nums[10]={95,87,59,62,33,22,25,15,46,1};
    quickSort<int>(nums,0,9);
    //输出
    for(int i=0;i<9;i++){
        cout<" ";
    }


    cin.get();
    return 0;
}

你可能感兴趣的:(算法)