快速排序的不同语言不同方法实现的…

GO
// 第一种写法
func quickSort(values [] int left, right  int {
     temp := values[left]
     := left
     i, := left, right
 
     for  <= {
         for  >= && values[j] >= temp {
             j--
         }
         if  >= {
             values[p] values[j]
             j
         }
 
         if  values[i] <= temp && <= {
             i++
         }
         if  <= {
             values[p] values[i]
             i
         }
     }
     values[p] temp
     if  p-left {
         quickSort(values, left, p-1)
     }
     if  right-p {
         quickSort(values, p+1, right)
     }
}
 
func QuickSort(values [] int {
     if  len(values) <= {
         return
     }
     quickSort(values, 0, len(values)-1)
}
 
// 第二种写法
func Quick2Sort(values [] int {
     if  len(values) <= {
         return
     }
     mid, := values[0], 1
     head, tail := 0, len(values)-1
     for  head tail {
         fmt.Println(values)
         if  values[i] mid {
             values[i], values[tail] values[tail], values[i]
             tail--
         else  {
             values[i], values[head] values[head], values[i]
             head++
             i++
         }
     }
     values[head] mid
     Quick2Sort(values[:head])
     Quick2Sort(values[head+1:])
}

 Ruby

def quick_sort(a)  
  (x=a.pop) ? quick_sort(a.select { |i| i <= x }) + [x] + quick_sort(a.select { |i| i > x }) : []
end

Erlang语言

 

超简短实现: q_sort([])-> []; q_sort([H|R])-> q_sort([X||X<-R,X<-R,X>=H]).
 

Haskell语言

 

q_sort n=case n of []->[] (x:xs)->q_sort [a|a<-xs,a<=x]++[x]++q_sort [a|a<-xs,a>x]
 

C++语言

 #include

using namespace std;

void Qsort(int a[], int low, int high)

{

    if(low >= high)

    {

        return;


    }


    int first = low;


    int last = high;


    int key = a[first];


 


    while(first < last)


    {


        while(first < last && a[last] >= key)


        {


            --last;


        }


 


        a[first] = a[last];


 


        while(first < last && a[first] <= key)


        {


            ++first;


        }


         


        a[last] = a[first];    


 


    }


    a[first] = key;


    Qsort(a, low, first-1);


    Qsort(a, first+1, high);


}


int main()


{


    int a[] = {57, 68, 59, 52, 72, 28, 96, 33, 24};


 


    Qsort(a, 0, sizeof(a) / sizeof(a[0]) - 1);


 


    for(int i = 0; i < sizeof(a) / sizeof(a[0]); i++)


    {


        cout << a[i] << "";


    }

    

    return 0;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值