快速排序
来源:互联网 发布:unity3d行走播放动画 编辑:程序博客网 时间:2024/06/16 22:37
package com.wlf.array;public class QuickSort {/* * 快速排序 时间复杂度:O(n)-0(n²) 空间复杂度O(1),需要一个辅助空间作参考。 * * 可以简单理解为"挖坑填数"+"分治法(递归)" * 先取一个参考数x,比x小放其左边,反之放右边。(以x参考,相当于在x处挖了个坑,那么就必须填坑) * * 先由后往前找比x小的,找到后,把这个数放到x位置填坑,此时这个数原来的位置就有了一个坑 * 在由前往后找,找到比x大的,把这个数填到上个数的坑中。 * 依次循环(注意:每次循环从挖过坑的后一位开始),由后往前,挖坑填坑,再又前往后。 * 直到找到与上个数相同的数时停止,把参考数x放到这个数的位置上。 */void quick_sort(int s[], int l, int r)// 返回调整后基准数 l=0,r=s.length的位置 //// (friendly){if (l < r) {// Swap(s[l], s[(l + r) / 2]); //以中间的数作为基准数的,将中间的这个数和第一个数交换int i = l, j = r, x = s[l];while (i < j) {while (i < j && s[j] >= x)// 从右向左找第一个小于x的数j--;if (i < j)s[i++] = s[j];while (i < j && s[i] < x)// 从左向右找第一个大于等于x的数i++;if (i < j)s[j--] = s[i];}s[i] = x;// 递归调用quick_sort(s, l, i - 1);quick_sort(s, i + 1, r);}}// //test//public static void main(String[] args) {//int[] array = new int[] { 123, 23, 32, 32, 4, 6, 13, 93, 33, 23, 45 };//QuickSort a = new QuickSort();//a.quick_sort(array, 0, 10);//for (int i = 0; i < array.length; i++) {//System.out.print(array[i] + " ");////}////}}
1 0
- 快速排序
- 快速排序
- 快速排序
- 快速排序!
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- OKHTTp的简介
- 前端面试题
- 关键字
- 快速排序
- win7 64位安装完ubuntu14.04双系统 无法连接无线网问题解决
- 快速排序
- XML 简介
- WEBGL的测试网站和基础知识
- gulp入门指导
- 数据库事务及其四大特性
- Spring Boot系列之八 多数据源配置整体介绍
- XRecyclerView的Header包含ListView冲突解决(XRecyclerView嵌套ListView)
- MRT(MODIS reprojection tools)下载及安装
- oj219. Contains Duplicate II