C/C++ 简单排序之冒泡排序
1、简单选择排序,基于O(n2)时间复杂度的排序算法;
2、冒泡排序:基于O(n2)时间复杂度的排序算法;
3、简单插入排序;
4、希尔排序;
5、归并排序,基于归并操作的一种排序算法;
6、快速排序,属于分治法的一种;
7、堆排序;
文章我们主要介绍下 冒泡排序。
在若干个随机的 数字,将他们按照从小到大(从大到小)的顺序进行排列。
基本思想:两两比较数的大小,满足小于(大于)的条件,交换他们的位置,依次类推:
如数组的5个元素的值为: 5 4 3 2 1
第一次: 4 3 2 1 5
第二次: 3 2 1 4 5
第三次: 2 1 3 4 5
第四次: 1 2 3 4 5
核心代码:
void Bubble_sort(int arr[]) // 冒泡排序
{int i = 0, j = 0;for(i = 0; i < NUM; i++){for(j = 0; j < NUM-1; j++){if(arr[j] > arr[j+1]){int tmp = arr[j];arr[j] = arr[j+1];arr[j+1] = tmp;}}}
}
冒泡排序的时间复杂度是一种用时间换空间的排序方法,时间复杂度为O(n2)。
demo:
#include <iostream>
using namespace std;#define NUM 5void Input(int arr[])
{int i;cout << "Please input "<< NUM << "number: ";for(i = 0; i < NUM; i++){cin >> arr[i];}}
void Output(int arr[])
{int i= 0;for(i = 0; i <NUM; i++){cout << arr[i] << " ";}
}
void Select_Sort(int arr[])// 选择排序
{int i = 0, j = 0;for(i = 0; i <NUM-1; i++){for( j =i+1 ;j < NUM; j++){int temp = arr[i];if(temp > arr[j]){arr[i] = arr[j];arr[j] = temp;}}}
}
void Bubble_sort(int arr[]) // 冒泡排序
{int i = 0, j = 0;for(i = 0; i < NUM; i++){for(j = 0; j < NUM-1; j++){if(arr[j] > arr[j+1]){int tmp = arr[j];arr[j] = arr[j+1];arr[j+1] = tmp;}}}
}
int main()
{int array[NUM];Input(array);cout << "Output in order from large to small" <<endl;//Select_Sort(array);Bubble_sort(array);cout << "Output the ten number: ";Output(array);cout << endl;getchar();return 0;
}
C/C++ 简单排序之冒泡排序相关推荐
- 【数据结构笔记32】排序算法概述、简单排序(冒泡排序、插入排序)、逆序对
本次笔记内容: 9.1.1 概述 9.1.2 冒泡排序 9.1.3 插入排序 9.1.4 时间复杂度下界 文章目录 排序算法前提条件 冒泡排序 插入排序 时间复杂度下界 逆序对(inversion) ...
- 三种简单排序算法---冒泡排序,简单选择排序,直接插入排序
冒泡排序 核心思想:类似水泡一样,一趟比较,通过相邻元素的交换,冒出当前序列的最小值(最大值)到相应位置 复杂度分析 最好的情况:序列本身有序,只要进行n-1次比较,无需交换,时间复杂度为O(n) 最 ...
- 数据结构 排序【简单排序(冒泡、插入)、希尔排序、堆排序、排序方法的综合比较、2套 排序汇总代码】
目 录 第9章 排序(上) 9.1 简单排序(冒泡.插入) 1.前提 2.简单排序(冒泡排序) 3.简单排序(插入排序) 4.时间复杂度下界 9.2 希尔排序 9.3 堆排序 排序方法综合比较 排 ...
- 【简单排序算法】:简单选择排序、直接插入排序和冒泡排序
[简单排序算法]:简单选择排序.直接插入排序和冒泡排序 简单选择排序: 原理:设所排序序列的记录个数为n.i取1,2,-,n-1,每次从所有n-i+1个记录(Ri,Ri+1,-,Rn)中找出最小的记录 ...
- 简单入门排序算法(直接插入排序,折半插入排序,希尔排序,冒泡排序,堆排序,归并排序)
预备知识(排序数组的创建20,100 ,500 个随机数进行排序) "Struct.h" #pragma once #include<iostream> #includ ...
- 10种排序算法比较(直接插入排序、希尔排序、冒泡排序、快速排序、简单选择排序、堆排序、归并排序、基数排序、折半插入排序、2路插入排序)
本文(所有排序算法代码+综合比较代码)链接:https://download.csdn.net/download/qq_39932172/11217572 一.比较目的: 由于<数据结构> ...
- 八大排序(一):四种简单的排序(直接插入排序、希尔排序、冒泡排序、选择排序)
源码地址: https://github.com/TimePickerWang/aimed-at-offer/blob/master/java%E6%BA%90%E7%A0%81/Sort.java ...
- TZC 1283: 简单排序 —— 冒泡排序
我们以TZC 1283为例简单说明一下排序(含十大经典排序算法)的python实现方法和C实现方法.冒泡排序原理请参见:https://www.runoob.com/w3cnote/bubble-so ...
- C语言排序算法之简单交换法排序,直接选择排序,冒泡排序
C语言排序算法之简单交换法排序,直接选择排序,冒泡排序,最近考试要用到,网上也有很多例子,我觉得还是自己写的看得懂一些. 简单交换法排序 1 /*简单交换法排序 2 根据序列中两个记录键值的比较结果来 ...
最新文章
- 【年终总结】2020年有三AI做了什么,2021年我们要做什么?
- 牛客多校2 - Interval(网格图最大流转换为对偶图最短路)
- 基于PYNQ-Z2开发板实现矩阵乘法加速详细流程
- js递归遍历json树_2020-08-26:裸写算法:树的非递归先序遍历
- gradle:Creating New Gradle Builds
- 只允许,同一域名下IFRAME,禁止直接访问页面
- OpenCV4.5.1 | 使用一行代码将图像匹配性能提高14%
- 项目质量监测(三)e2e test端到端测试——单元测试和端到端测试 e2e test工具-Cypress Nightwatch TeatCafe Codecov-测试结果可视化
- 材料科学需要用计算机吗,计算机在材料科学中的运用分析
- 机器狗病毒(又称下载者木马病毒)的手工毒杀
- 利用云效度量功能进行质量运营和效率驱动提升
- python编程大赛队名_同行——团队展示
- 本题要求对两个整数a和b,输出其中较大的数。
- 东芝有刷直流电机驱动器IC TB67H450FNG
- 选择工业相机需要知道的50个问题
- 期货反向对冲-要成为长期赚钱的1%,你得学会反着干
- 弹幕 mysql_3、Flask构建弹幕微电影网站-安装mysql数据库及配置
- SecureCRT SSH远程登入connection was reset
- OSGI框架------HelloWorld程序
- 25组-四象限法进行功能分析
热门文章
- 无法打开编译的html,解决VS在编译的时候无法打开...obj文件的问题
- 苏如是:香港中鼎资本与您分享“数实共生世界”和“后人类社会”
- EasyExcel读excel文件模板校验暨时间格式正则表达式
- Mobile开发(绘制背景图片)
- 广电网络宽带电视网关简介与优化设置
- 第十章:项目沟通管理 - (10.0 项目沟通管理是什么)
- library sort (图书馆排序)
- 计算机桌面图标设置密码,教你怎么设置电脑开机密码
- 使用Freemark和aspose.word实现动态word转pdf
- [源码和文档分享]基于JAVA的实现学生卡管理系统