随笔分类 -  算法

摘要:> 希尔排序算法是按其设计者希尔(Donald Shell)的名字命名,该算法由1959年公布,是插入排序的一种更高效的改进版本。 希尔排序是基于插入排序的以下两点性质而提出改进方法的: - 插入排序在对几乎已经排好序的数据操作时,效率高。 - 但插入排序一般来说是低效的,因为插入排序每次只能将数据移动一位。 1. 基本思想 1. 先取一个小于n的整数d1作为第一个增量,把待排序的全部记录分成dx个组。所有距离为d1的倍数的记录放在同一个组中 2. 先在各组内进行直接插入排序 3. 然后取第二个增量d2 阅读全文
posted @ 2017-02-28 09:38 土豆蛋炒饭 阅读(323) 评论(1) 推荐(0)
摘要:直接选择排序算法基本思想 直接选择排序是从无序区选一个最小的元素直接放到有序区的最后。 1. 初始状态:无序区为a[1...n],有序区为空。 2. 第一次排序:在无序区a[1...n]中选出最小的记录a[k],将它与有序区的第一个元素交换,使a[1...1]和a[2...n]分别变为 记录个数增加1个的新有序区和记录个数减少1个的新无序区。 3. ... 经过n-1次排序结束。 阅读全文
posted @ 2017-02-27 16:34 土豆蛋炒饭 阅读(258) 评论(0) 推荐(0)
摘要:快速插入排序算法基本思想 > 每次将一个待排序的记录,按其关键字大小插入到前面已经排好序的子序列中的适当位置,直到全部插入完成。 设数组为a[0...n-1] 1. 初始时,a[0]自成一个有序区,无序区为a[1...n-1]。令i=1 2. 将a[i]并入当前有序区a[0...i-1]中形成a[0...i]的有序区间 3. i++重复第二步直到i==n-1。排序完成 阅读全文
posted @ 2017-02-27 15:39 土豆蛋炒饭 阅读(215) 评论(0) 推荐(0)
摘要:冒泡算法基本思想 1. 设数组长度为N。 2. 比较前后两个数据,如果前面的数据大于后面的数据,就将两个数据交换。 3. 这样对数组的第0个数据到N - 1个数据进行遍历后,最大的一个数据就沉到了数组的第N - 1个位置。 4. N = N - 1,如果N不为0就重复前面两步,否则排序完成。 阅读全文
posted @ 2017-02-26 23:21 土豆蛋炒饭 阅读(208) 评论(0) 推荐(0)
摘要:归并排序基本思想 1. 可以将一组数组分成A,B两组 2. 依次类推,当分出来的小组只有一个数据时,就可以认为这个小组已经达到了有序 3. 然后合并相邻的两个小组 4. 这样先通过递归的分解数组,再合并数组就可以完成 **归并排序**。 阅读全文
posted @ 2017-02-26 17:20 土豆蛋炒饭 阅读(352) 评论(0) 推荐(0)
摘要:快速排序算法基本思想 1. 先从数组中找出一个数作为基准数 2. 分区过程,将比这个数小的数全部放到它的左边,大于它的数全部放到右边 3. 再对左右区间重复第二步,直到各区间都只有一个数 阅读全文
posted @ 2017-02-26 15:16 土豆蛋炒饭 阅读(258) 评论(0) 推荐(0)