选择排序,插入排序,冒泡排序详解

  • 描述
  • 图例
  • 代码实现

描述

  1. 选择排序:将要排序的对象分作两部份,一个是已排序的,一个是未排序的,从后端未排序部份选择一个最小值,并放入前端已排序部份的最后一个。
  2. 插入排序:像是玩朴克一样,我们将牌分作两堆,每次从后面一堆的牌抽出最前端的牌,然后插入前面一堆牌的适当位置。
  3. 冒泡排序:顾名思义,就是排序时,最大的元素会如同气泡一样移至右端,其利用比较相邻元素的方法,将大的元素交换至右端,所以大的元素会不断的往右移动,直到适当的位置为止。
    基本的气泡排序法可以利用旗标的方式稍微减少一些比较的时间,当寻访完阵列后都没有发生任何的交换动作,表示排序已经完成,而无需再进行之后的回圈比较与交换动作

图例

  1. 选择排序

  1. 插入排序

  1. 冒泡排序

代码实现

// sort.cpp : 定义控制台应用程序的入口点。
//#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define MAX 10
#define SWAP(x,y) {int t; t = x; x = y; y = t;}
void selsort(int[]); // 选择排序
void insort(int[]); // 插入排序
void bubsort(int[]); // 气泡排序
int main(void) {int number[MAX] = {0};int i;//得到一个从1900年1月1日到现在的时间秒数,这样每一次运行程序的时间的不同就可以保证得到不同的随机数了。srand(time(NULL));printf("排序前:");for(i = 0; i < MAX; i++) {number[i] = rand() % 100;printf("%d ", number[i]);}printf("\n请选择排序方式:\n");printf("(1)选择排序\n(2)插入排序\n(3)气泡排序\n:");scanf("%d", &i);switch(i) {case 1:selsort(number); break;case 2:insort(number); break;case 3:bubsort(number); break;default:0printf("选项错误(1..3)\n");}return 0;
}
//选择排序
void selsort(int number[]) {int i, j, k, m;for(i = 0; i < MAX-1; i++) {m = i;for(j = i+1; j < MAX; j++)if(number[j] < number[m])m = j;if( i != m)SWAP(number[i], number[m])printf("第%d 次排序:", i+1);for(k = 0; k < MAX; k++)printf("%d ", number[k]);printf("\n");}
}
//插入排序
void insort(int number[]) {int i, j, k, tmp;for(j = 1; j < MAX; j++) {tmp = number[j];i = j - 1;while(tmp < number[i]) {number[i+1] = number[i];i--;if(i == -1)break;}number[i+1] = tmp;printf("第%d 次排序:", j);for(k = 0; k < MAX; k++)printf("%d ", number[k]);printf("\n");}
}
//冒泡排序
void bubsort(int number[]) {int i, j, k, flag = 1;for(i = 0; i < MAX-1 && flag == 1; i++) {flag = 0;for(j = 0; j < MAX-i-1; j++) {if(number[j+1] < number[j]) {SWAP(number[j+1], number[j]);flag = 1;}}printf("第%d 次排序:", i+1);for(k = 0; k < MAX; k++)printf("%d ", number[k]);printf("\n");}
}

20191007:选择排序,插入排序,冒泡排序详解相关推荐

  1. Java 八大排序之冒泡排序详解

    Java 八大排序之冒泡排序详解 分析冒泡排序 数组[24,69,80,57,13] 第1轮排序:目标把最大数放在最后 第1 次比较:[24,69,80,57,13] 第2 次比较:[24,69,8 ...

  2. 选择排序法python详解-Python选择排序算法(三)

    优化选择排序算法,大致思路是每次循环分别找到最大值和最小值,放到列表的头部和尾部 代码如下: #! coding:utf8 import random def select_sort(arr): fo ...

  3. 选择排序 - python实现详解

    选择排序 选择排序(Selection sort)是一种简单直观的排序算法.它的工作原理如下.首先在没有排序列表中找到最小(大)元素,存放到列表的起始位置,然后,再从剩余未排序元素中继续寻找最小(大) ...

  4. C语言排序方法——冒泡排序详解!你学会了吗?

    冒泡排序法的基本思路为:每次将相邻的两个数比较,将小的调在前面.举个例子,如果有6个数:9,8,5,4,2,0.第一次先将最前面的两个数9和8对调.第二次将第2个数和第3个数对调(9和5)······ ...

  5. c语言数组项目按身高排序,过三关 Java冒泡排序选择排序插入排序小练习

    材料:猴子排序,按照身高来从小到大来排序. 第一关: 老猴子带领小猴子队伍按大小逐一比较,交换,开始高矮排列队伍.(冒泡排序) 第二关: 太慢了,给第一关增加难度,进行选择排序 第三关: 最后,尝试选 ...

  6. 冒泡排序选择排序插入排序

    目录 冒泡排序 选择排序 插入排序 冒泡排序 冒泡排序(最好是O(n), 最坏O(n2)) 原理: 拿自己与上面一个比较,如果上面一个比自己小就将自己和上面一个调换位置,依次再与上面一个比较,第一轮结 ...

  7. 十大经典排序算法详解(一)冒泡排序,选择排序,插入排序

    养成习惯,先赞后看!!! 你的点赞与关注真的对我非常有帮助.如果可以的话,动动手指,一键三连吧!!! 目录 1.算法的评判标准 2.排序算法的分类 3.十大经典排序算法-冒泡排序,选择排序,插入排序 ...

  8. 常见排序算法详解(插入排序、希尔排序、选择排序、冒泡排序、快速排序)

    1.1 插入排序 步骤: 1.从第一个元素开始,该元素可以认为已经被排序 2.取下一个元素tem,从已排序的元素序列从后往前扫描 3.如果该元素大于tem,则将该元素移到下一位 4.重复步骤3,直到找 ...

  9. 【排序算法】冒泡排序|选择排序|插入排序|希尔排序

    文章目录 冒泡排序 选择排序 插入排序 希尔排序 冒泡排序   第一个元素开始向第二个元素比较,若大于则交换位置,不大于则不动.然后第二个元素和第三个元素比较,再然后第三个元素和第四个元素比较-一直比 ...

最新文章

  1. Linux中的输入输出管理
  2. Core J2EE Patterns - Service Locator--oracle官网
  3. for命令linux,linux中的for命令
  4. ABB 机器人 IsStopMoveAct 指令 - Is stop move flags active
  5. 大数据学习要知道的十大发展趋势,以及学习大数据的几点建议
  6. 含泪挥手告别RHCE
  7. 产品总监的日常:管好团队必须先“正三观”
  8. crm客户管理系统源码_公司crm客户关系管理系统的功能
  9. BOM offset client scroll
  10. 网络信息安全从业者,持NISP二级或CISP证书,最高可补贴30000元
  11. php怎么给文章加页码,PPT如何插入页码
  12. 【Javascript】函数中的arguments
  13. Java 从lambda 表达式引用的本地变量必须是最终变量或实际上的最终变量问题解决
  14. Transformer 详解(上) — 编码器【附pytorch代码实现】
  15. 多个blockquote_无线电力BLOCKQUOTE目录
  16. 2017年第十五届Esri中国用户大会资料分享
  17. 消息协议 AMQP 及MQTT ,STOMP,JMS的概念和基本理解
  18. 别忘搜索:可用谷歌、百度等多个搜索引擎同时搜索
  19. 知道这些税务小技巧,财务就能给公司赚钱
  20. 微信小程序wxs文件,(indexOf方法)

热门文章

  1. 5G手机江湖:一场卡位战,一位“关键先生”,一个“王者”
  2. 微软想让所有人都成为开发者?
  3. 十年无果,Linux 开发者放弃 VMware 诉讼
  4. 小心!你的脸正在成为色情片主角
  5. Linux 4.20 发布!35 万行代码都更新了啥?
  6. 弃用 Oracle!
  7. 饿了别叫妈,叫阿里“爸爸”!
  8. 引入神经网络 API 1.1、支持全面屏,Android 9.0 来了!
  9. 俄罗斯黑客入侵冬奥会系统,还甩锅给朝鲜?
  10. 台式电脑打不开计算机c盘,电脑c盘打不开进不了系统怎么办