冒泡排序:

比较相邻的元素。如果第一个比第二个大,就交换他们两个。

对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。

针对所有的元素重复以上的步骤,除了最后一个。

持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

代码实现(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

冒泡排序和选择排序的实现与比较相关推荐

  1. 算法与数据结构(冒泡排序,选择排序和插入排序的总结)

    冒泡排序,选择排序和插入排序的总结 在规模较小时,或者元素的有序性较高时,插入排序的时间复杂度可以接近 O(n) ,是上述三种排序里表现最好的 一.通过表格我们可以发现,冒泡排序的时间复杂度是要优于选 ...

  2. JavaSE(二十四)——冒泡排序、选择排序、直接插入排序以及二分查找

    文章目录 1. 冒泡排序 2. 选择排序 3. 直接插入排序 4. 二分查找 1. 冒泡排序 原理:数组元素两两比较,大的往后放,经过一轮比较后,最大元素在最后面,如此往复. 举例说明: 代码: // ...

  3. 冒泡排序、选择排序和插入

    冒泡排序.选择排序和插入排序代码如下: package cn.luxh.app.test;public class SimpleSortUtil {/*** 冒泡排序* 从小到大排序* 思路:* 1) ...

  4. C语言排序(桶排序,冒泡排序,选择排序,插入排序,快速排序)

    参考:C语言五大排序(桶排序,冒泡排序,选择排序,插入排序,快速排序)动态演示 作者:一只青木呀 发布时间: 2020-09-09 20:18:43 网址:https://blog.csdn.net/ ...

  5. 掌握常见的内部排序方法(插入排序,冒泡排序,选择排序,快速排序,堆排序,希尔排序,归并排序,基数排序等)...

    掌握常见的内部排序方法(插入排序,冒泡排序,选择排序,快速排序,堆排序,希尔排序,归并排序,基数排序等). 数组高级以及Arrays(掌握) 排序方法 空间复杂度 时间复杂度 稳定性 插 入 排 序 ...

  6. 冒泡排序和选择排序区别_你以为只是简单的排序?(一)

    一直在犹豫要不要写排序的文章,因为真的烂大街了.可是一旦细看,还真是很多值的思考的地方,所以还是选择记录一下 以下完整代码,均可从这里获取 https://github.com/Rain-Life/d ...

  7. Python排序算法(一)冒泡排序、选择排序、插入排序

    今天总结一下Python中的排序算法.这篇文章有的排序算法是:冒泡排序.选择排序.插入排序. 冒泡排序 先看一下代码. ''' 冒泡排序 '''def bubble_sort(aList):n = l ...

  8. js实现冒泡排序,快速排序,选择排序

    用js冒泡排序,快速排序,选择排序 1.冒泡排序 冒泡排序是比较经典的排序方法,是一种用时间换空间的排序方法.我总结了一下它的特点:(1)它的时间复杂度是:(2)每一趟相邻元素两两比较完毕就会产生最值 ...

  9. 【Java数据结构与算法】第七章 冒泡排序、选择排序、插入排序和希尔排序

    第七章 冒泡排序.选择排序.插入排序和希尔排序 文章目录 第七章 冒泡排序.选择排序.插入排序和希尔排序 一.冒泡排序 1.基本介绍 2.代码实现 二.选择排序 1.基本介绍 2.代码实现 三.插入排 ...

  10. 十大排序算法:冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序、堆排序、计数排序、桶排序、基数排序

    冒泡排序.选择排序.插入排序.希尔排序.归并排序.快速排序.堆排序.计数排序.桶排序.基数排序的动图与源代码. 目录 关于时间复杂度 冒泡排序 选择排序 插入排序 希尔排序 归并排序 快速排序 堆排序 ...

最新文章

  1. 题目1148:Financial Management
  2. 线程的调度、优先级和亲缘性——Windows核心编程学习手札系列之七
  3. 【技术综述】基于弱监督深度学习的图像分割方法综述​
  4. 清华大学人工智能研究院知识智能研究中心成立
  5. webpack代理配置打包后接口404_webpack 从零开始
  6. mysql主从从配置详解_MySQL主从配置详解
  7. TDengine安装教程
  8. 基于 TCP Socket 的服务器与客户端的简单连接
  9. 『ACM C++』 PTA 天梯赛练习集L1 | 048-49
  10. Java中变量及数据类型
  11. Mac环境配置MySQL(详细)
  12. Unity3D教程:iTween插件的介绍和用法
  13. HDMI转SDI转换器信号损失方法
  14. 2023北京影视技术设备展览会
  15. cf(穿越火线)进游戏乱码问题解决方案
  16. VBOX虚拟机连网方案
  17. 拆分中石油:多种方案流传 但启动阻力重重
  18. 计算机网络 -- TCP/IP
  19. 运营商大数据:未来移动联通电信三大运营商数据会同步共享吗?
  20. 游戏感:虚拟感觉的游戏设计师指南——第一章 定义游戏感

热门文章

  1. 一步步学习SPD2010--第九章节--使用可重用工作流和工作流表单(13)--修改任务表单...
  2. EGit(Git Eclipse Plugin)使用
  3. 《Unity_5.X_3D游戏开发技术详解与典型案例》pdf
  4. 事件代理与事件处理流程
  5. Centos之常见目录作用介绍
  6. SSM整理笔记3——配置解析
  7. struts2+spring+hibernte整合示例
  8. Think PHP url的四种访问方法。
  9. 内存对齐的规则与作用
  10. mysql 增删改查操作笔记