您的位置 首页 java

快速排序代码实现

今天我们接着昨天的 快速排序 来说,主要进行一个代码的实现。具体的排序思想上一篇我已经说过了,这一篇主要是一个代码的实现:


 private int getPivot(int begin, int end) {        
  return (begin + end) >> 1;    
}           // 一次排序  
private int partition(int[] array, int begin, int end) {        
  int pivot = getPivot(begin, end);           
  int tmp = array[pivot];          
  array[pivot] = array[end];        
  while (begin != end) {              
    while (array[begin] < tmp && begin < end)         
      begin++;               
    if (begin < end) {           
      array[end] = array[begin];   
      end--;              
    }              
    while (array[end] > tmp && end > begin)      
      end--;             
    if (end > begin) {        
      array[begin] = array[end];                  
      begin++;              
    }        
  }          
  // 此时两个下标指向同一个元素.以这个位置左右分治(分治点)            
  array[begin] = tmp;          
  return begin;        
}          
private void qsort(int[] array, int begin, int end) {       
  if (end - begin < 1)          
    return;           
  int pivot = partition(array, begin, end);       
  qsort(array, begin, pivot);            
  qsort(array, pivot + 1, end);        
}       
@Test   
public void main() {   
  int[] array = {4,6,1,8,3,5,7};    
  qsort(array, 0, array.length - 1);    
  for (int i = 0; i < array.length; i++) {  
    System.out.print(array[i] + " ");      
  }   
}  

  

排序结果

文章来源:智云一二三科技

文章标题:快速排序代码实现

文章地址:https://www.zhihuclub.com/187902.shtml

关于作者: 智云科技

热门文章

网站地图