插入排序:

/*** 插入排序* 初始时,拿第二个和第一个比较,如果第二个小于第一个,两个交换* 当进行到第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. 你有哪些深度学习(rnn、cnn)调参的经验?
  2. 量子信息先行者中科院院士郭光灿:“要把中国量子计算机卖到国外”
  3. boost::posix_time和boost::date_time杂项的测试程序
  4. FineReport连接mysql8.0.16
  5. 标准模板库(STL)学习指南之set集合
  6. How to judge if one OData model data is out of date
  7. html5实现3d翻页效果,利用css3 3d transform制作超逼真翻书效果
  8. (案例五)将数据保存在MongoDB中
  9. Android 应用开发----ViewPager---2.四大函数
  10. Spring : spring-jcl-5.1.2.RELEASE.jar日志包
  11. C++控制CPU核的使用
  12. 使用ORB_SLAM2的方式进行特征检测和提取
  13. 标准的软件测试文档,软件测试上线的标准是什么?
  14. 途牛VS去哪儿VS去啊旅游产品竞品分析报告
  15. CF 3-6 2级组 D题 STRESSFUL TRAINING 紧张的比赛
  16. 学生管理系统--【Java+MySQL】--数据库系统概论综合性实验
  17. 关于p操作和v操作的理解
  18. Lua -- 重写pairs方法(让字典访问有序)
  19. 制作符合EIA/TIA标准的RJ-45两种双绞线的压线顺序
  20. 吉他自学教程(一)-基础乐理

热门文章

  1. java做的web系统 m1 读卡器 结合_rfid android 系统对 读卡器的信息读取演示。 可 m1卡 238万源代码下载- www.pudn.com...
  2. 业内第一款300节点OpenStack数据中心Pod 戴尔、Mirantis和Big Switch联手呈献
  3. 国外程序员整理机器学习资源大全
  4. android 魔力锁屏,锁屏软件横评:锁屏功能PK_Android软件合辑_软件合辑_太平洋电脑网PConline...
  5. Chrom/Edge浏览器将网页另存为图片
  6. 大淘营淘宝店铺宝贝复制专家3.56 破解记录 不怕升级
  7. STM32F4DISCOVERY rtthread-3.1.5入门指南
  8. 【服务器数据恢复】服务器reiserfs文件系统损坏的数据恢复案例
  9. NOIP2018原创模拟赛DAY1 密室
  10. zlib、OpenSSL漏洞及解决