8大排序的(值得一看).pdf

  1. 1、本文档共15页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
8大排序的(值得一看)

程序员必知的8 大排序 (java 实现) 前几天,看到一篇前辈的博文“程序员必知的 8 大排序”,不禁的手痒起来,重新翻开 严蔚敏老师的《数据结构》复习了一遍,然后一一的用java 去实现,其中有不足之处, 还望各位道友指正出来。 先来看看8 种排序之间的关系: 1, 直接插入排序 (1)基本思想:在要排序的一组数中,假设前面(n-1) [n=2] 个数已经是排 好顺序的,现在要把第n 个数插到前面的有序数中,使得这n 个数 也是排好顺序的。如此反复循环,直到全部排好顺序。 (2 )实例 (3 )用java 实现 public class insertSort { public insertSort() { int [] a = { 49, 38, 65, 97, 76, 13, 27, 49, 78, 34, 12, 64, 5, 4, 62,99, 98, 54, 56, 17, 18, 23, 34, 15, 35, 25, 53, 51 }; int temp = 0; for (int i = 1; i a.length; i++) { int j = i - 1; temp = a[i]; for (; j = 0 temp a[j]; j--) { a[j + 1] = a[j]; // 将大于temp的值整体后移一个单位 } a[j + 1] = temp; } for (int i = 0; i a.length; i++) System.out .println(a[i]); } } 2, 希尔排序 (最小增量排序) (1)基本思想:算法先将要排序的一组数按某个增量d (n/2,n 为要排序数的个 数)分成若干组,每组中记录的下标相差d.对每组中全部元素进行直接插入排序, 然后再用一个较小的增量(d/2 )对它进行分组,在每组中再进行直接插入排序。 当增量减到1 时,进行直接插入排序后,排序完成。 (2 )实例: (3 )用java 实现 public class shellSort { public shellSort() { int [] a = { 1, 54, 6, 3, 78, 34, 12, 45, 56, 100 }; double d1 = a.length; int temp = 0; while (true ) { d1 = Math.ceil(d1 / 2); int d = (int) d1; for (int x = 0; x d; x++) { for (int i = x + d; i a.length; i += d) { int j = i - d; temp = a[i]; for (; j = 0 temp a[j]; j -= d) { a[j + d] = a[j]; } a[j + d] = temp; } } if (d == 1) break; } for (int i = 0; i a.length; i++) System.out .println(a[i]); } } 3.简单选择排序 (1)基本思想:在要排序的一组数中,选出最小的一个数与第一个位置的数交 换; 然后在剩下的数当中再找最小的与第二个位置的数交换,如此

文档评论(0)

liwenhua00 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档