在各类算法中,排序算法是最基本的内容。在这里主要分享一个冒泡排序,选择排序,插入排序,希尔排序,快速排序和堆排序以及合并排序。
1、冒泡排序
这里是最基础的了,不用多说。
public static void bubbleSort(int[] a){
int temp;
for(int i=1;i<a.length;i++){
for(int j=0;j<a.length-i;...
分类:
编程语言 时间:
2016-05-23 15:22:41
阅读次数:
213
合并联接
合并联接是唯一产生排序的联接算法。
注:这个简化的合并联接不区分内表或外表;两个表扮演同样的角色。但是真实的实现方式是不同的,比如当处理重复值时。
1.(可选)排序联接运算:两个输入源都按照联接关键字排序。
2.合并联接运算:排序后的输入源合并到一起。
排序
我们已经谈到过合并排序,在这里合并排序是个很好的算法(但是并非最好的,如果内存足够用的话,还是...
分类:
数据库 时间:
2016-05-18 18:23:53
阅读次数:
335
该算法是采用分治算法的典型应用,步骤如下: 1. 申请两个与已经排序序列相同大小的空间,并将两个序列拷贝其中 2. 设定最初位置分别为两个已经拷贝排序序列的起始位置,比较两个序列元素的大小,依次选择相对小的元素放到原始序列; 3.重复2直到某一拷贝序列全部放入原始序列,将另一个序列剩下的所有元素直接 ...
分类:
编程语言 时间:
2016-05-18 15:57:45
阅读次数:
180
堆
堆排序和合并排序一样,是一种时间复杂度为O(nlgn)的算法,同时和插入排序一样,是一种就地排序算法(不需要额外的存储空间)。堆排序需要用到一种被称为最大堆的数据结构,与java或者lisp的gc不一样,这里的堆是一种数据结构,他可以被视为一种完全二叉树,即树里面除了最后一层其他层都是填满的。也正是因为这样,树里面每个节点的子女和双亲节点的序号都可以根据当前节点的序号直...
分类:
编程语言 时间:
2016-05-12 20:05:22
阅读次数:
284
二分搜索算法上运用分治策略的典型例子。 给定已排好序的n个元素a[0...n-1],现在要在这n个元素中找出一特定元素x。 首先想到的是用顺序搜索方法,逐个比较a[0...n-1]中元素,直至找出元素x或搜索整个数组后确定x不在其中。这个算法没有很好利用n个元素已排好序这个条件,因此在最坏情况下,顺 ...
分类:
其他好文 时间:
2016-05-10 23:19:34
阅读次数:
226
package com.stu.find; public class MergeSort { public void merge(int []A,int p,int q,int r) { int nl=q-p+1; int nr=r-q; int [] rArr=new int[nl+1]; int ...
分类:
编程语言 时间:
2016-05-08 23:55:30
阅读次数:
193
题目描述:给定两个整数数组(第一个是数组 A,第二个是数组 B),在数组 A 中取 A[i],数组 B 中取 B[j],A[i] 和 B[j]两者的差越小越好(|A[i] - B[j]|)。返回最小差。
样例:给定数组 A = [3,4,6,7], B = [2,3,8,9],返回 0。
还记得之前做过一道“合并排序数组”的问题(详见:点击打开链接)。当时是选用了两个指针,分别指向两个数组,然...
分类:
其他好文 时间:
2016-04-29 16:49:14
阅读次数:
135
这篇文章分两部分来写,第一部分写代码的实现过程,第二部分把实验报告从头到尾呈现出来。 我习惯调试使用的编译器是DEV C++,不是vs系列的,可能头文件上有点区别。但是下面的报告是我放到vs里面测试过的,可以直接用,不影响。 第一部分:(解析) 题目:随机产生一个整型数组,然后用合并排序将该数组做升 ...
分类:
编程语言 时间:
2016-04-28 00:03:12
阅读次数:
511
package com.stu.find; public class MergeSort { public void merge(int []A,int p,int q,int r) { int nl=q-p+1; int nr=r-q; int [] rArr=new int[nl+1]; int ...
分类:
编程语言 时间:
2016-04-24 23:09:57
阅读次数:
320
合并排序,顾名思义,就是通过将两个有序的序列合并为一个大的有序的序列的方式来实现排序。合并排序是一种典型的分治算法:首先将序列分为两部分,然后对每一部分进行循环递归的排序,然后逐个将结果进行合并。 合并排序最大的优点是它的时间复杂度为O(nlgn),这个是我们之前的选择排序和插入排序所达不到的。他还 ...
分类:
编程语言 时间:
2016-04-17 16:09:18
阅读次数:
353