java 8大排序算法
2013-09-11 14:10
330 查看
8种排序之间的关系:
002
003 1, 直接插入排序
004
(1)基本思想:在要排序的一组数中,假设前面(n-1)[n>=2] 个数已经是排
005 好顺序的,现在要把第n个数插到前面的有序数中,使得这n个数
006 也是排好顺序的。如此反复循环,直到全部排好顺序。
007 (2)实例
008
009 (3)用java实现
010 [java] view plaincopy
011 package
com.njue;
012
013 public class insertSort
{
014 public
insertSort(){
015
inta[]={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};
016
int temp=0;
017
for(int i=1;i
018
int j=i-1;
019
temp=a[i];
020
for(;j>=0&&temp
021
a[j+1]=a[j];
//将大于temp的值整体后移一个单位
022
}
023
a[j+1]=temp;
024
}
025
for(int i=0;i
026
System.out.println(a[i]);
027 }
028 }
029
030 2,
希尔排序(最小增量排序)
031 (1)基本思想:算法先将要排序的一组数按某个增量d(n/2,n为要排序数的个数)分成若干组,每组中记录的下标相差d.对每组中全部元素进行直接插入排序,然后再用一个较小的增量(d/2)对它进行分组,在每组中再进行直接插入排序。当增量减到1时,进行直接插入排序后,排序完成。
032 (2)实例:
033
034
035 (3)用java实现
036 [java] view plaincopy
037 public class shellSort
{
038 public
shellSort(){
039
int
a[]={1,54,6,3,78,34,12,45,56,100};
040
double d1=a.length;
041
int temp=0;
042
while(true){
043
d1= Math.ceil(d1/2);
044
int d=(int) d1;
045
for(int x=0;x
046
for(int i=x+d;i
047
int j=i-d;
002
003 1, 直接插入排序
004
(1)基本思想:在要排序的一组数中,假设前面(n-1)[n>=2] 个数已经是排
005 好顺序的,现在要把第n个数插到前面的有序数中,使得这n个数
006 也是排好顺序的。如此反复循环,直到全部排好顺序。
007 (2)实例
008
009 (3)用java实现
010 [java] view plaincopy
011 package
com.njue;
012
013 public class insertSort
{
014 public
insertSort(){
015
inta[]={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};
016
int temp=0;
017
for(int i=1;i
018
int j=i-1;
019
temp=a[i];
020
for(;j>=0&&temp
021
a[j+1]=a[j];
//将大于temp的值整体后移一个单位
022
}
023
a[j+1]=temp;
024
}
025
for(int i=0;i
026
System.out.println(a[i]);
027 }
028 }
029
030 2,
希尔排序(最小增量排序)
031 (1)基本思想:算法先将要排序的一组数按某个增量d(n/2,n为要排序数的个数)分成若干组,每组中记录的下标相差d.对每组中全部元素进行直接插入排序,然后再用一个较小的增量(d/2)对它进行分组,在每组中再进行直接插入排序。当增量减到1时,进行直接插入排序后,排序完成。
032 (2)实例:
033
034
035 (3)用java实现
036 [java] view plaincopy
037 public class shellSort
{
038 public
shellSort(){
039
int
a[]={1,54,6,3,78,34,12,45,56,100};
040
double d1=a.length;
041
int temp=0;
042
while(true){
043
d1= Math.ceil(d1/2);
044
int d=(int) d1;
045
for(int x=0;x
046
for(int i=x+d;i
047
int j=i-d;
相关文章推荐
- Java 实现缓存机制
- JAVA中Action层, Service层&n…
- JAVA Pattern和Matcher 的用法
- Java NIO 学习 ByteBuffer,FileCha…
- java file中 mkdir()与 mkdirs()方…
- Java中Could not find the main cl…
- [USACO]Prime Cryptarithm【JAVA】
- java 解密碰到的误导人的错误提示…
- java.lang.IllegalArgumentException: Invalid <url-pattern> toDo in 
- java设置-JDK环境变量的设置&nbsp;(转)
- java 环境配置 JSP+TOMCAT+MYS…
- java&nbsp;冒泡排序
- java&nbsp;发送字节流图片,c++接收二进…
- java中dynamic&nbsp;web&nbsp;proj…
- java 中 instanceof 的意思及用法
- java&nbsp;中&nbsp;int和byte数组互转
- java&nbsp;swing-JTable
- Java&nbsp;EE的13种核心技术
- java&nbsp;访问&nbsp;usb&nbsp;(一)
- Eclipse启动时报错:A&nbsp;Java&nbsp;RunTim…