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;
    }
    

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

  • 相关阅读:
    xshell使用密钥登陆服务器
    SQLyog使用隧道登陆数据库
    puttygen.exe生成ppk格式密钥
    xshell生成密钥对
    性能测试基础---jmeter函数二次开发
    Python:基础知识(二)
    异常点检测
    Python:numpy.newaxis
    三张图读懂机器学习:基本概念、五大流派与九种常见算法
    机器学习:样本集、验证集(开发集)、测试集
  • 原文地址:https://www.cnblogs.com/torresliang/p/4844368.html
Copyright © 2011-2022 走看看