冒泡排序和选择排序的实现与比较
冒泡排序:
比较相邻的元素。如果第一个比第二个大,就交换他们两个。
对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
针对所有的元素重复以上的步骤,除了最后一个。
持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
代码实现(c++):
void sort_arr2(int arr[],int number_used){int min_num = arr[0],number = 0;for(int index = 0;index<number_used;index++){for(int i =0;i<number_used-index-1;i++){if(arr[i]>arr[i+1]){number = arr[i] ;arr[i] = arr[i+1];arr[i+1] = number;}}}
}
选择排序:
选择排序是蛮力法在排序算法中的一个重要运用,选择排序开始的时候,我们扫描整个列表,找到它的最小元素然后和第一个元素交换,将最小元素放到它在有序表的最终位置上。然后我们从第二个元素开始扫描列表,找到最后n-1个元素的最小元素,再和第二个元素交换位置,把第二小的元素放在它最终的位置上。如此循环下去,在n-1遍以后,列表就排好序了。
代码实现(C++):
void sort_arr(int arr[],int number_used){int min_num = arr[0],number = 0;for(int index = 0;index<number_used;index++){for(int i = index+1;i<number_used;i++){if(arr[i]<arr[index]){number = arr[i];arr[i] = arr[index];arr[index] = number;}}}
}
冒泡排序:比较 (N-1)+(N-2)+...+2+1 = N*(N-1)/2=N2/2
交换 0——N2/2 = N2/4
总时间 3/4*N2
选择排序:比较 (N-1)+(N-2)+...+2+1 = N*(N-1)/2=N2/2
交换 0——3*(N-1)=3*(N-1)/2=3/2*N
总时间 N2/2+3/2*N
冒泡排序和选择排序的实现与比较相关推荐
- 算法与数据结构(冒泡排序,选择排序和插入排序的总结)
冒泡排序,选择排序和插入排序的总结 在规模较小时,或者元素的有序性较高时,插入排序的时间复杂度可以接近 O(n) ,是上述三种排序里表现最好的 一.通过表格我们可以发现,冒泡排序的时间复杂度是要优于选 ...
- JavaSE(二十四)——冒泡排序、选择排序、直接插入排序以及二分查找
文章目录 1. 冒泡排序 2. 选择排序 3. 直接插入排序 4. 二分查找 1. 冒泡排序 原理:数组元素两两比较,大的往后放,经过一轮比较后,最大元素在最后面,如此往复. 举例说明: 代码: // ...
- 冒泡排序、选择排序和插入
冒泡排序.选择排序和插入排序代码如下: package cn.luxh.app.test;public class SimpleSortUtil {/*** 冒泡排序* 从小到大排序* 思路:* 1) ...
- C语言排序(桶排序,冒泡排序,选择排序,插入排序,快速排序)
参考:C语言五大排序(桶排序,冒泡排序,选择排序,插入排序,快速排序)动态演示 作者:一只青木呀 发布时间: 2020-09-09 20:18:43 网址:https://blog.csdn.net/ ...
- 掌握常见的内部排序方法(插入排序,冒泡排序,选择排序,快速排序,堆排序,希尔排序,归并排序,基数排序等)...
掌握常见的内部排序方法(插入排序,冒泡排序,选择排序,快速排序,堆排序,希尔排序,归并排序,基数排序等). 数组高级以及Arrays(掌握) 排序方法 空间复杂度 时间复杂度 稳定性 插 入 排 序 ...
- 冒泡排序和选择排序区别_你以为只是简单的排序?(一)
一直在犹豫要不要写排序的文章,因为真的烂大街了.可是一旦细看,还真是很多值的思考的地方,所以还是选择记录一下 以下完整代码,均可从这里获取 https://github.com/Rain-Life/d ...
- Python排序算法(一)冒泡排序、选择排序、插入排序
今天总结一下Python中的排序算法.这篇文章有的排序算法是:冒泡排序.选择排序.插入排序. 冒泡排序 先看一下代码. ''' 冒泡排序 '''def bubble_sort(aList):n = l ...
- js实现冒泡排序,快速排序,选择排序
用js冒泡排序,快速排序,选择排序 1.冒泡排序 冒泡排序是比较经典的排序方法,是一种用时间换空间的排序方法.我总结了一下它的特点:(1)它的时间复杂度是:(2)每一趟相邻元素两两比较完毕就会产生最值 ...
- 【Java数据结构与算法】第七章 冒泡排序、选择排序、插入排序和希尔排序
第七章 冒泡排序.选择排序.插入排序和希尔排序 文章目录 第七章 冒泡排序.选择排序.插入排序和希尔排序 一.冒泡排序 1.基本介绍 2.代码实现 二.选择排序 1.基本介绍 2.代码实现 三.插入排 ...
- 十大排序算法:冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序、堆排序、计数排序、桶排序、基数排序
冒泡排序.选择排序.插入排序.希尔排序.归并排序.快速排序.堆排序.计数排序.桶排序.基数排序的动图与源代码. 目录 关于时间复杂度 冒泡排序 选择排序 插入排序 希尔排序 归并排序 快速排序 堆排序 ...
最新文章
- 题目1148:Financial Management
- 线程的调度、优先级和亲缘性——Windows核心编程学习手札系列之七
- 【技术综述】基于弱监督深度学习的图像分割方法综述​
- 清华大学人工智能研究院知识智能研究中心成立
- webpack代理配置打包后接口404_webpack 从零开始
- mysql主从从配置详解_MySQL主从配置详解
- TDengine安装教程
- 基于 TCP Socket 的服务器与客户端的简单连接
- 『ACM C++』 PTA 天梯赛练习集L1 | 048-49
- Java中变量及数据类型
- Mac环境配置MySQL(详细)
- Unity3D教程:iTween插件的介绍和用法
- HDMI转SDI转换器信号损失方法
- 2023北京影视技术设备展览会
- cf(穿越火线)进游戏乱码问题解决方案
- VBOX虚拟机连网方案
- 拆分中石油:多种方案流传 但启动阻力重重
- 计算机网络 -- TCP/IP
- 运营商大数据:未来移动联通电信三大运营商数据会同步共享吗?
- 游戏感:虚拟感觉的游戏设计师指南——第一章 定义游戏感