您的位置:首页 > 其它

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

2017-08-11 23:29 471 查看
GO
// 第一种写法
func quickSort(values []
int
, left, right 
int
) {
    
temp := values[left]
    
p := left
    
i, j := left, right
 
    
for
 
i <= j {
        
for
 
j >= p && values[j] >= temp {
            
j--
        
}
        
if
 
j >= p {
            
values[p] = values[j]
            
p = j
        
}
 
        
if
 
values[i] <= temp && i <= p {
            
i++
        
}
        
if
 
i <= p {
            
values[p] = values[i]
            
p = i
        
}
    
}
    
values[p] = temp
    
if
 
p-left > 1 {
        
quickSort(values, left, p-1)
    
}
    
if
 
right-p > 1 {
        
quickSort(values, p+1, right)
    
}
}
 
func QuickSort(values []
int
) {
    
if
 
len(values) <= 1 {
        
return
    
}
    
quickSort(values, 0, len(values)-1)
}
 
// 第二种写法
func Quick2Sort(values []
int
) {
    
if
 
len(values) <= 1 {
        
return
    
}
    
mid, i := 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:])
}
 Rubydef
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;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: