插入排序:

/*** 插入排序* 初始时,拿第二个和第一个比较,如果第二个小于第一个,两个交换* 当进行到第N次时,前面的N-1个顺序应该是正确的* 拿第N个和前面的N-1个数比较,如果第M个小于N,M+1大于N,则把N插到M和M+1中间* 相当于将N和前一个数比较,如果前一个数大于N,则把前一个移动到N的位置上,内层的每个循环都是将大于N的数字在向后移以为,也就相当于是将N插在两个之间。* * 时间复杂度:n+(n-1)+(n-2)+...+1 = (n+1)n/2=n^2   O(n^2) 空间复杂度:O(1) 稳定* @Title: insertionSort * @author: wanglh3* @Description: TODO* @param numbers* @return void*/    public static void insertionSort(int[] numbers){for(int i=1;i < numbers.length;i++){int temp = numbers[i];int j = i-1;for(; j >=0 && numbers[j]>temp ;j--){if(temp < numbers[j]){numbers[j+1] = numbers[j];}}System.out.println(j+"----"+temp);numbers[j+1] = temp;}}

二分排序算法应该是插入排序的优化算法,插入时不从一端查找,而是从中间开始查找。

冒泡排序

/*** 冒泡排序* 从后往前,先把最小的移到第一位,然后循环,把次小的移到第二位* 冒泡排序法的改进:* 1.设置一个标志变量,如果某一次排序中,没有进行交换,就可以停止排序* 2.设置一个记录,标志某位之后都已经进行排序,之后排序时,无需对之后的元素进行比较* 3.正向逆向同时排序 * * 时间复杂度:O(n^2) 空间复杂度O(1) 稳定* @Title: bubbleSort * @author: wanglh3* @Description: TODO* @param numbers* @return void*/public static void bubbleSort(int[] numbers){for(int i = 1; i < numbers.length; i++){for(int j = numbers.length-1; j >= i; j--){if(numbers[j] < numbers[j-1]){int temp = numbers[j];numbers[j] = numbers[j-1];numbers[j-1] = temp;}}}}

选择排序

/*** 选择排序* 从未排序的数中,选出最小的,与未排序的第一个数值交换* 改进方法:二元选择排序* 每次循环选出最大的和最小的,最小的和前面的交换,最大的和后面的交换* 时间复杂度:O(n^2) 空间复杂度O(1) 不稳定* @Title: selectionSort * @author: wanglh3* @Description: TODO* @param numbers* @return void*/public static void selectionSort(int[] numbers){for(int i = 0; i < numbers.length-1; i++){int index = i;int temp = numbers[i];for(int j=i+1;j<numbers.length;j++){if(numbers[j]<temp){temp = numbers[j];index = j;}}numbers[index] = numbers[i];numbers[i] = temp;}}

快速排序

/*** 快速排序* 选择一个基准,比他大的,都放到他后面,比他小的,都放到他前面* 平均时间复杂度是O(nlogn),空间复杂度是O(logn) 不稳定* @Title: quickSort * @author: wanglh3* @Description: TODO* @param numbers* @return void*/public static void quickSort(int[] numbers){_quickSort(numbers,0,numbers.length-1);}public static void _quickSort(int[] numbers,int low,int high){if(low < high){int _low = partition(numbers,low,high);_quickSort(numbers,low,_low-1);_quickSort(numbers,_low+1,high);}}//{3,7,9,4,2,8,0,1,5}public static int partition(int[] numbers,int low,int high){int privotKey = numbers[low];//基准数while(low < high){//如果num[high]>pri  num[low] = num[high]//high--//while(low < high && numbers[high]>=privotKey){high--;//当高位大于基准值时,一直向前移动,直到碰到小于基准值的,跳出循环,将高位赋值给低位}numbers[low] = numbers[high];while(low < high && numbers[low] <= privotKey){low++;}numbers[high]=numbers[low];System.out.println();}numbers[low] = privotKey;return low;}//------------快排end----------------

排序算法(不定时更新~)相关推荐

  1. C++排序算法实现(更新中)

    比较排序法:如冒泡排序.简单选择排序.合并排序.快速排序.其最优的时间复杂度为O(nlogn). 其他排序法:如桶排序.基数排序等.时间复杂度可以达到O(n).但试用范围有要求. 桶排序:排序的数组元 ...

  2. [Android Traffic] 调整定时更新的频率(C2DM与退避算法)

    转载自: http://blog.csdn.net/kesenhoo/article/details/7395253 Minimizing the Effect of Regular Updates[ ...

  3. 排序算法(更新ing)(C语言实现)(认真的不像实力派)

    为什么要总结排序算法: 由于时而要用到排序的思想,这里慢慢总结吧,以前也看的不少,但是荒废久了,也就忘得差不多了,这里贴出供需要的人看吧.互联网虽好,但有时候资源良莠不齐,看的也是头疼,不如总结来供自 ...

  4. c语言实力,排序算法(更新ing)(C语言实现)(认真的不像实力派)

    为什么要总结排序算法: 由于时而要用到排序的思想,这里慢慢总结吧,以前也看的不少,但是荒废久了,也就忘得差不多了,这里贴出供需要的人看吧.互联网虽好,但有时候资源良莠不齐,看的也是头疼,不如总结来供自 ...

  5. Canvas制作排序算法演示动画

    tips: 形象化演示排序算法可以让初学者快速理解,比较好的例子:jun-lu的SortAnimate,旧金山大学的David Galles教授的算法演示课件.最近在看canvas,试着用js+can ...

  6. Spark排序算法系列之(MLLib、ML)LR使用方式介绍(模型训练、保存、加载、预测)

    转载请注明出处:http://blog.csdn.net/gamer_gyt 博主微博:http://weibo.com/234654758 Github:https://github.com/thi ...

  7. 数据结构-考研难点代码突破(C/C++/Java排序算法,性能及其稳定性分析(内部排序))

    文章目录 1. 内部排序的基本种类 2. 插入排序 Ⅰ直接插入排序 性能与稳定性分析 Ⅱ 折半插入排序 性能与稳定性分析 Ⅲ 希尔排序 性能与稳定性分析 3. 交换排序 Ⅰ 冒泡排序 性能与稳定性分析 ...

  8. 数据结构(三) 用java实现七种排序算法。

    很多时候,听别人在讨论快速排序,选择排序,冒泡排序等,都觉得很牛逼,心想,卧槽,排序也分那么多种,就觉得别人很牛逼呀,其实不然,当我们自己去了解学习后发现,并没有想象中那么难,今天就一起总结一下各种排 ...

  9. 这或许是东半球分析十大排序算法最好的一篇文章

    作者 | 不该相遇在秋天 转载自五分钟学算法(ID:CXYxiaowu) 前言 本文全长 14237 字,配有 70 张图片和动画,和你一起一步步看懂排序算法的运行过程. 预计阅读时间 47 分钟,强 ...

最新文章

  1. .net中日至框架log4net.dll如何使用
  2. C#代码生成工具:文本模板初体验 使用T4批量修改实体框架(Entity Framework)的类名...
  3. 网络营销——浅析网站改版之后对网站展开新的网络营销有哪些影响?
  4. android内容提供者_挖穿Android第三十九天
  5. leetcood学习笔记-226- 翻转二叉树
  6. HTML+CSS+JS实现 ❤️酷炫情人节爱心动画特效❤️
  7. mysql视图实验心得_Mysql学习经验总结【3】
  8. C# 对话框使用整理
  9. 聚焦BCS|新华网:2020年北京网络安全大会开幕
  10. Mysql源码学习——Thread Manager
  11. anaconda 卸载_Windows安装Anaconda使用教程
  12. matlab进行差分检验,热传导方程几种差分格式的MATLAB数值解法比较
  13. morning 是字符串的内容变成good_小洁详解《R数据科学》--第十章 使用stringr处理字符串(上)...
  14. 第五篇 《小强升职记》
  15. 转:Spyder 快捷键大全
  16. 办公室装修的五要四不要
  17. 4.2 热储存与冷储存
  18. 01 | Linux详细简介
  19. Android通话录音流程
  20. IQueryable VS IEnumerable

热门文章

  1. MP3随身听固件升级详细教程
  2. leetcode每日一题 1020. 飞地的数量 简单的DFS板子题 (DFS+填平遍历) 根据是否连通边界找其是否为飞地~
  3. 倒脸,洗水洗脚...
  4. 3DMAX 10 角色动作
  5. Flash 安装失败
  6. NLP——斯坦福分词工具简单使用
  7. 自研P2P镜像分发系统
  8. 2022 新年春节倒计时微信小程序源码
  9. 提高sql查询效率速成宝典
  10. Visio绘图软件所需图标总结