首页 > 其他分享 >排序

排序

时间:2023-03-19 22:26:13浏览次数:26  
标签:sort right 复杂度 list midVal 排序 left

1. 快速排序

时间复杂度:平均复杂度为O(n·log n),最差情况下的复杂度为O(n2)

空间复杂度:平均复杂度为O(log n),最差情况下的复杂度为O(n)

 1 package org.example.sort;
 2 
 3 import java.util.List;
 4 
 5 /**
 6  * @description: 快速排序
 7  **/
 8 
 9 public class QuickSort {
10 
11     public static void sort(List<Integer> list) {
12         sort(list, 0, list.size() - 1);
13     }
14 
15     private static void sort(List<Integer> list, int begin, int end) {
16 
17         if (begin >= end) return;
18 
19         int left = begin;
20         int right = end;
21         int midVal = list.get(left);
22         while (left < right) {
23             // 基准值是最左侧的值,所以可以认为左边已经遇到的不满足条件的值
24             // 因此循环从右侧开始
25             while (list.get(right) > midVal && left < right) {
26                 right--;
27             }
28             // 找到第一个小于等于midVal的值,交换到左边
29             if (left < right) {
30                 list.set(left, list.get(right));
31                 left++;
32             }
33 
34             while (list.get(left) < midVal && left < right) {
35                 left++;
36             }
37             // 找到第一个大于等于midVal的值,交换到右边
38             if (left < right) {
39                 list.set(right, list.get(left));
40                 right--;
41             }
42         }
43         // 把midVal放到中间位置
44         list.set(left, midVal);
45         sort(list, begin, left - 1);
46         sort(list, left + 1, end);
47     }
48 }

标签:sort,right,复杂度,list,midVal,排序,left
From: https://www.cnblogs.com/simple-design/p/17234532.html

相关文章

  • 八大排序
    1.直接插入排序:和前面的比较,找到对应位置插入(注意相同的应该排后面一个2.希尔排序:对每一个子表进行直接插入排序设置步长d=x3.冒泡排序从后往前,两两对......
  • 堆排序——C语言描述
    堆排序——C语言描述目录堆排序——C语言描述0测试用例框架1定义2代码4测试用例0测试用例框架https://blog.csdn.net/m0_59469991/article/details/127137119?csdn......
  • Excel合并单元格排序
    Excel中合并单元格特别令人头疼!!!我们可以利用函数进行排序,希望这篇文章可以帮到你!一、MAX()函数方法选中需要排序的单元格,然后在编辑栏输入=MAX($A$1:A1)+1按Ctrl+En......
  • 十大排序总结
    Introduction​ 本篇是对十大排序的总结,会涉及每个排序的重要步骤、时间复杂度、空间复杂度、稳定性、代码实现Summary排序算法最差时间复杂度空间复杂度平均时......
  • "全类型" 排序(选择、冒泡) 回调函数
    直接上代码若代码有可优化或某处不合理,欢迎指正,不胜感激。#include<stdio.h>#include<stdlib.h>#include<string.h>intcompare_double(void*dst_addr,void*sr......
  • 二维数组冒泡排序
    0.本文结构概述二维数组在内存中是线性存储二维数组排序(C语言代码)1.二维数组在内存中是线性存储2.二维数组排序(C语言代码)#include<stdio.h>intmain(intarg......
  • acwing113. 特殊排序
    题目来源acwing题目难度2星算法标签二分参考程序//ForwarddeclarationofcompareAPI.//boolcompare(inta,intb);//returnboolmeanswhetheraisles......
  • 【基础算法】简单排序-冒泡排序
    【基础算法】简单排序-冒泡排序BubbleSortisthesimplestsortingalgorithmthatworksbyrepeatlyswappingtheadjacentelementsiftheyareinthewrongorde......
  • 常用排序算法
    1.冒泡排序冒泡排序:相邻的数两两比较,小的放前面,大的放后面。冒泡排序(BubbleSort)也是一种简单直观的排序算法。它重复的遍历过要排序的数列,一次比较相邻的两个元素,如果......
  • 希尔排序、快速排序、KMP算法
    希尔排序背景对N个样本进行排序,顺序为从小至大步骤第一步:对样本不断确定分组的间隔gap,确定分组次数X-》对应第一个循环第一次gap=N/2;第二次gap=gap/2;......