C++/Python冒泡排序与选择排序算法详解
冒泡排序
冒泡排序算法又称交换排序算法,是从观察水中气泡变化构思而成,原理是从第一个元素开始比较相邻元素的大小,若大小顺序有误,则对调后再进行下一个元素的比较,就仿佛气泡逐渐从水底逐渐冒升到水面一样。如此扫描一次之后就可以确保最后一个元素位于正确的位置。接着再逐步进行第二次扫描,直到完成所有元素的排序关系为止。
Python代码:
import random
#构造数据
data = list()
for i in range(10):
data.append(random.randint(0, 100))
#打印数据
def show(array, lens):
for k in range(lens):
print("%3d" % array[k], end='')
print()
print("原始数据: ", end='')
show(data, 10)
#排序算法
for m in range(10 - 1):
for n in range(10 - m - 1):
if data[n] > data[n + 1]:
data[n], data[n + 1] = data[n + 1], data[n]
print("第%d次冒泡: " % (m + 1), end='')
show(data, 10)
print("排序结果: ", end='')
show(data, 10)
C++代码:
int * Bubble_Sort(int array[], int len)
{
if (array == NULL)
{
return NULL;
}
int temp = 0;
for(int i = 0; i < len - 1; i++)
{
for(int j = 0; j < len - i - 1; j++)
{
if(array[j] < array[j + 1])
{
temp = array[j];
array[j] = array[j + 1];
array[j + 1] = temp;
}
}
}
return array;
}
选择排序
选择排序算法算是枚举法的应用,就是反复从未排序的数列中取出最小的元素,放到对应的位置。例如一开始在所有数据中挑选出最小项放在第一个位置(假设从小到大排列),再从第二项才是挑选一个最小项放在第2个位置,以此重复,直到完成排序
Python代码
import random
data = list()
for i in range(20):
data.append(random.randint(0, 100))
def show_array(array, lens):
for m in range(lens):
print("%4d" % (array[m]), end='')
print()
print("原始数据: ", end='')
show_array(data, 20)
for k in range(20 - 1):
min_num = k
for n in range(k+1, 20):
if data[n] < data[min_num]:
min_num = n
if min_num != k:
data[k], data[min_num] = data[min_num], data[k]
print("第%2d次交换:" % (k+1), end='')
show_array(data, 20)
print("顺序数据: ", end='')
show_array(data, 20)
C++代码:
int * Select_sort(int array[], int lens)
{
if (array == NULL)
{
return NULL;
}
for(int i = 0; i < lens - 1; i++)
{
int min = i;
for(int j = i + 1; j < lens; j++)
{
if (array[j] < array[min])
{
min = j;
}
}
if (min != i)
{
int temp = array[i];
array[i] = array[min];
array[min] = temp;
}
}
return array;
}
C++/Python冒泡排序与选择排序算法详解的更多相关文章
- Python实现的选择排序算法原理与用法实例分析
Python实现的选择排序算法原理与用法实例分析 这篇文章主要介绍了Python实现的选择排序算法,简单描述了选择排序的原理,并结合实例形式分析了Python实现与应用选择排序的具体操作技巧,需要的朋 ...
- 「浙江理工大学ACM入队200题系列」问题 A: 零基础学C/C++34—— 3个数比较大小(冒泡排序与选择排序算法)
本题是浙江理工大学ACM入队200题第四套中的A题,同时给出了冒泡排序和选择排序算法 我们先来看一下这题的题面. 由于是比较靠前的题目,这里插一句.各位新ACMer朋友们,请一定要养成仔细耐心看题的习 ...
- 八大排序算法详解(动图演示 思路分析 实例代码java 复杂度分析 适用场景)
一.分类 1.内部排序和外部排序 内部排序:待排序记录存放在计算机随机存储器中(说简单点,就是内存)进行的排序过程. 外部排序:待排序记录的数量很大,以致于内存不能一次容纳全部记录,所以在排序过程中需 ...
- javascript 中合并排序算法 详解
javascript 中合并排序算法 详解 我会通过程序的执行过程来给大家合并排序是如何排序的... 合并排序代码如下: <script type="text/javascript& ...
- JS中常见排序算法详解
本文将详细介绍在JavaScript中算法的用法,配合动图生动形象的让你以最快的方法学习算法的原理以及在需求场景中的用途. 有句话怎么说来着: 雷锋推倒雷峰塔,Java implements Java ...
- js十大排序算法详解
十大经典算法导图 图片名词解释:n: 数据规模k:“桶”的个数In-place: 占用常数内存,不占用额外内存Out-place: 占用额外内存 1.冒泡排序 1.1 原始人冒泡排序 functi ...
- Java各种排序算法详解
排序大的分类可以分为两种:内排序和外排序.在排序过程中,全部记录存放在内存,则称为内排序,如果排序过程中需要使用外存,则称为外排序.下面讲的排序都是属于内排序. 内排序有可以分为以下几类: (1).插 ...
- JavaScript的9大排序算法详解
一.插入排序 1.算法简介 插入排序(Insertion-Sort)的算法描述是一种简单直观的排序算法.它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入. ...
- 【Java学习笔记之十一】Java中常用的8大排序算法详解总结
分类: 1)插入排序(直接插入排序.希尔排序) 2)交换排序(冒泡排序.快速排序) 3)选择排序(直接选择排序.堆排序) 4)归并排序 5)分配排序(基数排序) 所需辅助空间最多:归并排序 所需辅助空 ...
随机推荐
- Noip模拟44 2021.8.19
比较惊人的排行榜 更不用说爆零的人数了,为什么联赛会这么难!!害怕了 还要再努力鸭 T1 Emotional Flutter 考场上没切掉的神仙题 考率如何贪心,我们把黑色的条延长$s$,白色的缩短$ ...
- 今天学习了BootStrap
今天学习了BootStrap 一.BootStrap介绍 Bootstrap是一个前端开发的框架,来自 Twitter,是目前很受欢迎的前端框架.Bootstrap 是基于 HTML.CSS.Java ...
- 注意 .NET string.GetHashCode() 用法
需求案例:需要把字符串存入数据库,并且要求数据库中不能有重复的字符串,由此就引出了将字符串hash成特定的hash值,依靠查询hash值是否重复来判断字符串是否重复.这样做的好处在于查询重复字符串的代 ...
- Py高级函数和方法
Map() Redece() Dir() __len__ ---->>> len() getattr().setattr() 以及 hasattr() 参考廖雪峰----- ...
- SpringCloud微服务实战——搭建企业级开发框架(十二):OpenFeign+Ribbon实现负载均衡
Ribbon是Netflix下的负载均衡项目,它主要实现中间层应用程序的负载均衡.为Ribbon配置服务提供者地址列表后,Ribbon就会基于某种负载均衡算法,自动帮助服务调用者去请求.Ribbo ...
- linux 启动过程以及如何将进程加入开机自启
linux 启动流程 系统启动主要顺序就是: 1. 加载内核 2. 启动初始化进程 3. 确定运行级别 4. 加载开机启动程序 5. 用户登录 启动流程的具体细节可以看看Linux 的启动流程 第4步 ...
- docker 存储驱动(storage driver)知识总结
http://www.sohu.com/a/101016494_116235 一,先看docker镜像是如何构建和存储. 下面是ubuntu:15.04的镜像分层.一共是4层,每一层都由一些只读并且描 ...
- Swarm+Docker+Portainer(集群,图形化)
参考文章 https://blog.csdn.net/u011781521/article/details/80469804 https://blog.csdn.net/u011781521/arti ...
- jmeter no-JUI执行常用命令(四)
一.常用命令简述 -n, --nongui命令行界面启动jmeter-t, --testfile {filename}jmx结尾的测试计划,支持相对路径-l, --logfile {filename} ...
- Excel 读写
一.环境准备:pom.xml 导入依赖 poi-ooxml <dependencies> <dependency> <groupId>org.apache.poi& ...