zoukankan      html  css  js  c++  java
  • 关于排序(快速排序)

    package com.sw.demo.test;
    
    /**
     * 关于快速排序
     * @author Song
     *
     */
    public class TestQuickSort {
    
    	public static void main(String[] args) {
    		
    		int[] arr = {5,9,8,4,7,3,6,2,1};
    		
    		quickSort(arr,0,arr.length-1); // 快速排序
    		
    		for (int i = 0; i < arr.length; i++) {
    			System.out.print(arr[i]+"  ");
    		}
    		
    	}
    	
    	/**
    	 * 快速排序
    	 * @param arr
    	 * @param low
    	 * @param high
    	 */
    	public static void quickSort(int[] arr, int low , int high){
    		
    		if(low >= high){ // 如果low(低位)大于等于high(高位),则直接返回 
    			return;
    		}
    		if((high - low) == 1){ // 如果只有两个数字,则直接比较
    			if(arr[0] > arr[1]){
    				swap(arr,0,1);
    			}
    			return ;
    		}
    		
    		int pivot = arr[low]; // 任取一个数字做为中间数字(一般,这里也是去第一个数字)
    		int left = low +1; // 定义左滑块,当前的游标
    		int right = high; // 定义右滑块,当前的游标
    		while(left < right){ // 从左右开始循环
    			while(left < right && left <= high){ // 如果左边小于右边,并且左边小于高位
    				if(arr[left] > pivot){ // 从左边找到一个大于中间数字的值,并记录下标
    					break;
    				}
    				left++; // 如果找不到,left++,一直向后找
    			}
    			while(left <= right && right > low){ // 如果右边大于左边,并且右边大于低位
    				if(arr[right] <= pivot){ // 从右边找到一个小于中间数字的值,并记录下标
    					break;
    				}
    				right--; // 如果找不到,right++,一直向前找
    			}
    			
    			if(left < right){ // 如果还没有找完,则交换数字
    				swap(arr, right, left);
    			}
    			
    			swap(arr,low,right); // 交换中间数字
    			quickSort(arr,low,right); // 排序前面数组
    			quickSort(arr,right+1,high); // 排序后边数组
    			
    		}
    		
    		
    	}
    	
    	// 掉位方法
    	public static void swap(int[] array, int i, int j){
    		int temp;
    		temp = array[i];
    		array[i] = array[j];
    		array[j] = temp;
    	}
    
    }
    
  • 相关阅读:
    IsEmpty函数和IsNull函数之间的区别
    JavaScript的self和this使用小结
    PHP中读写文件实现代码
    ExtJs的数据代理proxy
    php递归列出所有文件和目录的代码
    解析Extjs与php数据交互(增删查改)
    MySql 批量创建、导入实例
    MySQL 进入 导入
    小知识:批量导入数据
    js 扩展实例
  • 原文地址:https://www.cnblogs.com/icenter/p/2015336.html
Copyright © 2011-2022 走看看