• java实现快速排序


    算法:

    方法partition(int[] list,int first,int last)

    每次分割前确定一个中心位置pivot。大于pivot的放到pivot右边,小于pivot的放到pivot左边。

    一直分割到所有pivot处理完毕。

    public class QuickSortDemo {
      public QuickSortDemo() {}
      public static void main(String[] args) {
    	  int[] intList = {2,3,2,5,6,1,-2,3,14,12};
    	  quickSort(intList,0,intList.length-1);
    	  for (int i:intList) {
    		  System.out.print(i + " ");
    	  }
      }
      public static void quickSort(int[] list, int first, int last) {
    	  if (last > first) {
    		  int pivotIndex = partition(list,first,last);
    		  quickSort(list,first,pivotIndex-1);
    		  quickSort(list,pivotIndex+1,last);
    	  }
      }
      public static int partition(int[] list, int  first, int last) {
    	  int pivot = list[first];
    	  int low = first+1;
    	  int high = last;
    	  
    	  while (low < high) {
    		  while (low <= high && list[low] <= pivot) low++;
    		  while (low <= high && list[high] >= pivot) high--;
    		  
    		  if (high > low) {
    			  int temp = list[high];
    			  list[high] = list[low];
    			  list[low] = temp;
    		  }
    	  }
    	  
    	  while (high > first && list[high] >= pivot) high--;
    	  if (pivot > list[high]) {
    		  list[first] = list[high];
    		  list[high] = pivot;
    		  return high;
    	  }
    	  else return first;	  
      }
    }
    
  • 相关阅读:
    LeetCode 48 Anagrams
    大数据实时处理:百分点实时计算架构和算法
    Kafka操作
    Kafka
    批量扫描互联网无线路由设备telnet,并获取WIFI密码
    WMI
    openvas
    原始套接字
    Zabbix
    MySQL exist
  • 原文地址:https://www.cnblogs.com/Jam01/p/2981665.html
Copyright © 2020-2023  润新知