冒泡排序

冒泡排序算法又称交换排序算法,是从观察水中气泡变化构思而成,原理是从第一个元素开始比较相邻元素的大小,若大小顺序有误,则对调后再进行下一个元素的比较,就仿佛气泡逐渐从水底逐渐冒升到水面一样。如此扫描一次之后就可以确保最后一个元素位于正确的位置。接着再逐步进行第二次扫描,直到完成所有元素的排序关系为止。

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冒泡排序与选择排序算法详解的更多相关文章

  1. Python实现的选择排序算法原理与用法实例分析

    Python实现的选择排序算法原理与用法实例分析 这篇文章主要介绍了Python实现的选择排序算法,简单描述了选择排序的原理,并结合实例形式分析了Python实现与应用选择排序的具体操作技巧,需要的朋 ...

  2. 「浙江理工大学ACM入队200题系列」问题 A: 零基础学C/C++34—— 3个数比较大小(冒泡排序与选择排序算法)

    本题是浙江理工大学ACM入队200题第四套中的A题,同时给出了冒泡排序和选择排序算法 我们先来看一下这题的题面. 由于是比较靠前的题目,这里插一句.各位新ACMer朋友们,请一定要养成仔细耐心看题的习 ...

  3. 八大排序算法详解(动图演示 思路分析 实例代码java 复杂度分析 适用场景)

    一.分类 1.内部排序和外部排序 内部排序:待排序记录存放在计算机随机存储器中(说简单点,就是内存)进行的排序过程. 外部排序:待排序记录的数量很大,以致于内存不能一次容纳全部记录,所以在排序过程中需 ...

  4. javascript 中合并排序算法 详解

    javascript 中合并排序算法 详解 我会通过程序的执行过程来给大家合并排序是如何排序的...  合并排序代码如下: <script type="text/javascript& ...

  5. JS中常见排序算法详解

    本文将详细介绍在JavaScript中算法的用法,配合动图生动形象的让你以最快的方法学习算法的原理以及在需求场景中的用途. 有句话怎么说来着: 雷锋推倒雷峰塔,Java implements Java ...

  6. js十大排序算法详解

    十大经典算法导图  图片名词解释:n: 数据规模k:“桶”的个数In-place: 占用常数内存,不占用额外内存Out-place: 占用额外内存 1.冒泡排序 1.1  原始人冒泡排序 functi ...

  7. Java各种排序算法详解

    排序大的分类可以分为两种:内排序和外排序.在排序过程中,全部记录存放在内存,则称为内排序,如果排序过程中需要使用外存,则称为外排序.下面讲的排序都是属于内排序. 内排序有可以分为以下几类: (1).插 ...

  8. JavaScript的9大排序算法详解

    一.插入排序 1.算法简介 插入排序(Insertion-Sort)的算法描述是一种简单直观的排序算法.它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入. ...

  9. 【Java学习笔记之十一】Java中常用的8大排序算法详解总结

    分类: 1)插入排序(直接插入排序.希尔排序) 2)交换排序(冒泡排序.快速排序) 3)选择排序(直接选择排序.堆排序) 4)归并排序 5)分配排序(基数排序) 所需辅助空间最多:归并排序 所需辅助空 ...

随机推荐

  1. openmp学习心得(一)

    主要在vs2015下使用OMP,写一些自己omp的学习心得: 一.在VS2015下OpenMP的使用: 1.VS2015也仅仅支持OpenMP2.0版本,VS对OpenMP的支持并不太好. 2.在VS ...

  2. Spring MVC:DispatchServlet类

    Spring MVC架构 Spring Web MVC是基于Servlet API构建的原始Web框架,从一开始就已包含在Spring框架中.传统的模型层被拆分为了业务层(Service)和数据访问层 ...

  3. binary-tree-maximum-path-sum leetcode C++

    Given a binary tree, find the maximum path sum. The path may start and end at any node in the tree. ...

  4. xiaoxiaole

    common.cpp #include "common.h" common.h #ifndef COMMON_H_INCLUDED #define COMMON_H_INCLUDE ...

  5. WPF实现统计图

    WPF开发者QQ群: 340500857  | 微信群 -> 进入公众号主页 加入组织 前言 有小伙伴提出需要实现统计图. 由于在WPF中没有现成的统计图控件,所以我们自己实现一个. PS:有更 ...

  6. CSS学习笔记:浮动属性

    目录 一.浮动流是什么 二.通过代码实例了解浮动特点 1. 搭建测试框架 2. 添加浮动 3. 浮动元素的排布 4. 给行内元素添加浮动效果 5. 子元素浮动后对父元素的影响 5.1 在父元素中添加o ...

  7. Oracle ORA 12541 报错解决过程

    Oracle 导入全库之后使用plsql登陆时报错 版本12C版本2 ORA-12541: TNS: No Listener 再oracle主机本地可以使用sqlplus 登陆,但是使用plsql无法 ...

  8. Pod 健康检查和服务可用性检查

    Kubernetes 对 Pod 的健康状态可以通过两类探针来检查:LivenessProbe 和 ReadinessProbe,kubelet 定期执行这两类探针来针对容器的健康状况. Livene ...

  9. Java基础语法5-运算符

    运算符 基本运算符(算术.赋值.关系.逻辑等)不再赘述 位运算符 位运算符&.|.^.~.<<.>> &与 |或 ~非 ^异或 <<左移 >& ...

  10. 【死磕 NIO】— Proactor模式是什么?很牛逼吗?

    大家好,我是大明哥. 上篇文章我们分析了高性能 IO模型Reactor模式,了解了什么是Reactor 模式以及它的三种常见的模式,这篇文章,大明再介绍另外一种高性能IO模型: Proactor. 为 ...