首页 > 编程语言 >排序算法

排序算法

时间:2023-11-05 21:55:05浏览次数:39  
标签:24 12 15 23 元素 77 算法 排序

目录

给定数组:[12, 23, 8, 15, 33, 24, 77, 55]

1. 选择排序

选择排序的思路是从未排序的部分中选择最小的元素,然后将其与未排序部分的第一个元素交换。

选择最小值为8,与第一个元素12交换,得到:[8, 23, 12, 15, 33, 24, 77, 55]

2. 冒泡排序

冒泡排序的思路是比较相邻的元素,如果顺序不对则交换。
(1)比较第1和第2个元素,不需要交换。
(2)比较第2和第3个元素,需要交换,得到:[12, 8, 23, 15, 33, 24, 77, 55]
(3)比较第3和第4个元素,不需要交换。
(4)比较第4和第5个元素,不需要交换。
(5)比较第5和第6个元素,不需要交换。
(6)比较第6和第7个元素,不需要交换。
(7)比较第7和第8个元素,不需要交换。

3. 插入排序

插入排序的思路是将一个元素插入到已排序好的部分中。
(1)将第2个元素23插入到已排序部分(第1个元素12)之前,
得到:[12, 23, 8, 15, 33, 24, 77, 55]
(2)将第3个元素8插入到已排序部分(前两个元素)之前,
得到:[8, 12, 23, 15, 33, 24, 77, 55]
(3)将第4个元素15插入到已排序部分(前三个元素)之前,
得到:[8, 12, 15, 23, 33, 24, 77, 55]
(4)将第5个元素33插入到已排序部分(前四个元素)之前,
得到:[8, 12, 15, 23, 33, 24, 77, 55]
(5)将第6个元素24插入到已排序部分(前五个元素)之前,
得到:[8, 12, 15, 23, 24, 33, 77, 55]
(6)将第7个元素77插入到已排序部分(前六个元素)之前,
得到:[8, 12, 15, 23, 24, 33, 77, 55]
(7)将第8个元素55插入到已排序部分(前七个元素)之前,
得到:[8, 12, 15, 23, 24, 33, 55, 77]

4. 快速排序

快速排序的思路是选择一个基准元素,将小于基准放在左侧,大于基准放在右侧。
(1)选择基准为第一个元素12。
(2)从右向左找到比基准小的元素,将其放在基准的位置,
得到:[8, 23, 12, 15, 33, 24, 77, 55]
(3)从左向右找到比基准大的元素,将其放在之前右移的位置,
得到:[8, 23, 12, 15, 33, 24, 77, 55]
(4)将基准放在正确的位置,
得到:[8, 12, 23, 15, 33, 24, 77, 55]

标签:24,12,15,23,元素,77,算法,排序
From: https://www.cnblogs.com/twilight0966/p/17811280.html

相关文章

  • 随机数算法
    $rand()$范围:0-32767不是真正的随机,只是因为周期很长,看起来像如果不进行初始化,每次输出的结果是相同的#include<bits/stdc++.h>usingnamespacestd;signedmain(){ freopen("1.out","w",stdout); for(inti=1;i<=10;i++){ cout<<rand()&l......
  • 欧几里得算法
    目录1.欧几里得算法说明2.欧几里得算法伪代码3.测试伪代码1.欧几里得算法说明欧几里德(Euclidean)算法的基本原理就是:两个数的最大公约数等于它们中较小的数和两数之差的最大公约数。因此我们可以不断地将这两个数相减,用新两个数(前面的较小值与差值)替代初值求最大公约数。因此......
  • 重新学习算法_Day2
    今天复习了栈先入后出和队列先进先出 ......
  • 异常检测算法-完全卷积数据描述子FCDD
    文献来源:EXPLAINABLEDEEPONE-CLASSCLASSIFICATION   最近在做一些异物检测之类的算法任务,原本想使用目标识别算法,但是问题是正样本太多,而负样本没几个。所以有必要使用异常检测算法,日后不妨再结合目标识别任务去做。在正式开始前,需要先简单介绍一个广义损失函数的东西......
  • 分治算法(C语言)
    一、棋盘覆盖问题1、问题2、分析(1)当k>0时,将2k×2k棋盘分割为4个(2k-1)×(2k-1)子棋盘,如图(a)所示。每一次分解,都将原本大小的棋盘,划分为四份,即行号和列号各自缩减一半。(2)特殊方格必位于4个较小子棋盘之一中,其余3个子棋盘中无特殊方格。(3)为将无特殊方格子棋盘转化为特......
  • 【进阶算法】差分
    差分是一种类似于前缀和的编码技巧,可以快速实现对数组某个区间的所有元素增加或减少一个值。一、差分数组示例:数组arr=[8,1,3,-2,5,0,-3,6],输入m个操作,每个操作输入(L,R,val),表示对数组的[L,R]区间中每个元素增加val,要求输出最后的arr数组。比如,第1次操作,输入(0,2......
  • 排序算法
    快速排序......
  • SortableJS:vuedraggable实现元素拖放排序
    文档:https://sortablejs.github.io/Sortable/github:https://github.com/SortableJS/SortableVue2:https://github.com/SortableJS/Vue.DraggableVue3:https://github.com/SortableJS/vue.draggable.nextnpmhttps://www.npmjs.com/package/vuedraggable#vue2npminst......
  • 文心一言 VS 讯飞星火 VS chatgpt (128)-- 算法导论11.1 3题
    三、用go语言,试说明如何实现一个直接寻址表,表中各元素的关键字不必都不相同,且各元素可以有卫星数据。所有三种字典操作(INSERT、DELETE和SEARCH)的运行时间应为O(1)(不要忘记DELETE要处理的是被删除对象的指针变量,而不是关键字。)文心一言,代码正常运行:在Go语言中,我们可以使......
  • ACM竞赛常用算法模板(C++)
    1.快速排序AcWing785.快速排序:https://www.acwing.com/problem/content/787/题目描述给定你一个长度为n的整数数列。请你使用快速排序对这个数列按照从小到大进行排序。并将排好序的数列按顺序输出。输入格式输入共两行,第一行包含整数n。第二行包含n个整数(所有整数均在1∼10......