zoukankan      html  css  js  c++  java
  • 七大排序算法(下)

    (六)归并排序

    (七)快速排序

    希尔排序相当与直接插入排序的升级,堆排序相当于简单选择排序的升级,而接下来要介绍的快速排序其实是冒泡排序的升级。

    快速排序的基本思想是:每次在待排数组中选定一个基准元素,通过一趟排序,使得位于基准元素右侧的元素均大于此基准元素,基准元素左侧的元素均小于此基准元素。这样再分别对基准元素左右侧的元素分别进行排序,直至排序完成。老规矩,先上代码:

    public void quikSort(int[] array) {
    	qSort(array, 0, array.length - 1);
    }
    
    private void qSort(int[] array, int low, int high) {
    	if (low < high) {
    		int com = partition(array, low, high); //com为选定的基准元素的位置;
    		qSort(array, low, com - 1); //分别对左右序列进行快速排序;
    		qSort(array, com + 1, high);
    	}
    }
    
    private int partition(int[] array, int low, int high) {
    	int temp = array[low]; //每次选第一个元素作为基准元素;
    	while (low < high) {
    		while (low < high && array[high] >= temp)
    			high--;//找到该移动的高位元素(此时基准元素在low处),与基准元素交换(基准元素在high处);
    		swap(array, low, high);
    		while (low < high && array[low] <= temp)
    			low++;//找到该移动低位元素,与基准元素交换(基准元素又回到low处);
    		swap(array, low, high);
    	}
    	return low;
    }
    

    最终,实现了数组的排序。

  • 相关阅读:
    java第五周作业
    ajax初探--实现简单实时验证
    Html+CSS二周目--->常用概念
    Html+CSS--->第一周初探
    Servlet细节整合
    多线程基础
    设计模式之单例模式(Singleton)
    配置文件Java读写
    Java基础之IO流
    JDBC基础
  • 原文地址:https://www.cnblogs.com/torresliang/p/4844368.html
Copyright © 2011-2022 走看看