快速排序应该是应用最广泛的算法,流行的原因主要是因为实现简单,适用于不同的输入数据且在一般应用中比其他算法都快的多,其实跟上篇文章中的归并排序差不多类似,主要是通过分治思想,将数组不断的切割,最后求解。不过两者不同的是归并排序是在递归之后进行比较,也就是说递归之前左右两边的数据是无序的,快速排序是在...
分类:
编程语言 时间:
2015-06-21 00:38:07
阅读次数:
137
归并排序(Merge sort)用到了分治思想,即分-治-合三步,算法平均时间复杂度是o(nlgn).(一)算法实现 1 private void merge_sort(int[] array, int first, int last) { 2 if (first + 1 = arr...
分类:
编程语言 时间:
2015-06-20 23:20:38
阅读次数:
155
归并排序(MERGE_SORT) 1)分治思想 :归并排序用到了一种称为分治法的设计方法,分治法的思想就是将原问题的分解成为几个规模小的但是类似于原问题的子问题,递归的求解子问题,之后再合并子问题的解,来组成原问题的解。 2)原理 :根据分治方法的思想,归并排序算法的基本操作分为三大步:分解,解决问题,合并结果。以一个需要排序的数组为例,分解也就是不停地递归分解问题,直到问题的规模降为1...
分类:
编程语言 时间:
2015-06-18 11:29:34
阅读次数:
164
二分法是个非常经典的算法,是分治思想的很好的体现。在复习算法的过程中,正好把他记录下来。本来想写递归的,后来想想还是用迭代,效率更高些,虽然对这种小的数据没什么多大影响,(好吧,其实是我太懒了 !!)这里有个坑,以前一直没有注意,这里标记一下,调整上下限的时候一定要low = mid + 1; high = mid - 1; 否则可能遇到相邻的两个数字时候,陷入死循环!!!代码如下://...
分类:
编程语言 时间:
2015-06-06 12:06:02
阅读次数:
157
排序算法——快速排序今天介绍快速排序,这也是在实际中最常用的一种排序算法,速度快,效率高。就像名字一样,快速排序是最优秀的一种排序算法。思想快速排序采用的思想是分治思想。快速排序是找出一个元素(理论上可以随便找一个)作为基准(pivot),然后对数组进行分区操作,使基准左边元素的值都不大于基准值,基...
分类:
编程语言 时间:
2015-05-12 15:03:00
阅读次数:
138
1 package cn.it; 2 3 import java.util.Arrays; 4 // 利用分治思想 实现 归并排序 5 public class Fz { 6 public static void main(String[] args) { 7 int ...
分类:
编程语言 时间:
2015-05-06 09:10:07
阅读次数:
140
1 //1~10000000之间所有7的倍数和末尾含7的数一共有多少个呢 2 public class test { 3 public static void main(String[] args) { 4 int[] i={1,2,3,4,5,6,7,17}; 5 ...
分类:
编程语言 时间:
2015-05-05 19:20:54
阅读次数:
161
题目描述分治思想,递归求解。先建树再后序遍历:#include #include #include using namespace std;char pre[26], mid[26];typedefstruct _tree { char c; _tree *lc, *rc; _tree(char c...
分类:
其他好文 时间:
2015-05-04 01:10:02
阅读次数:
219
转载自http://www.cnblogs.com/luchen927/archive/2012/02/29/2368070.html思想快速排序采用的思想是分治思想。快速排序是找出一个元素(理论上可以随便找一个)作为基准(pivot),然后对数组进行分区操作,使基准左边元素的值都不大于基准值,基准...
分类:
编程语言 时间:
2015-05-03 23:35:47
阅读次数:
218
这一系列博客的特点就是——给出每趟排序的结果本来想着好好写一下过程,弄个图片什么的,不过觉得网上的解析太多了,都比较好,所以这些博客就算是对自己的总结吧。#include<stdio.h>
#include<limits.h>
#include<malloc.h>
inta[10]={2,8,5,7,4,3,1,9,6,..
分类:
编程语言 时间:
2015-04-29 20:00:47
阅读次数:
172