java数据结构--插入排序
来源:互联网 发布:web即时通讯源码 编辑:程序博客网 时间:2024/05/18 05:57
直接插入排序:算法的基本思想是把n个待排序的元素看成为一个有序表和一个无序表,开始时有序表中只包含一个元素,无序表中包含有n-1个元素,排序过程中每次从无序表中取出第一个元素,将它插入到有序表中的适当位置,使之成为新的有序表,重复n-1次即可完成排序过程。
public class Test {
public static void main(String[] args) {
int[] a = { 2, 54, 12, 5, 98};
for (int i = 0; i< a.length; i++) {
System.out.print(a[i]+ " ");
}
System.out.println();
Test.insertSort(a);
for (int i = 0; i< a.length; i++) {
System.out.print(a[i]+ " ");
}
}
public static voidinsertSort(int[] a) {
for (int i = 1; i< a.length; i++) {
int j =i;
int t =0;
while (j> 0 && a[j]< a[j - 1]) {
t= a[j];
a[j]= a[j - 1];
a[j- 1] = t;
j--;
}
}
}
}
折半插入排序:折半插入排序也是一样需要将新元素插入到已排好序的数组中,只是这时不是对元素进行逐个比较,而是在插入之前先找到正确的位置,然后直接插入到那个位置当中。
所谓折半查找,也就是将一个数组分成一半来查找,准确地来说,是将数组分成两个一半来查找,
public class Test {
public static void main(String[] args) {
int[] a = { 2, 54, 12, 5, 98};
for (int i = 0; i< a.length; i++) {
System.out.print(a[i]+ " ");
}
System.out.println();
Test.bInsertSort(a);
for (int i = 0; i< a.length; i++) {
System.out.print(a[i]+ " ");
}
}
public static void bInsertSort(int[] a){
for (int i = 1; i< a.length; i++) {
int t =a[i];
int low =0;
int high = i- 1;
while (low<= high) {
intmiddle = (low + high) / 2;
if(t < a[middle])
high= middle - 1;
else
low= middle + 1;
}
for (int j =i; j > low; j--){
a[j]= a[j - 1];
}
a[low] =t;
}
}
}
希尔排序:希尔排序算法的基本思想是先取一个小于n的整数d1作为第一个增量,把文件的全部记录分成d1个组。所有距离为dl的倍数的记录放在同一个组中。先在各组内进行直接插人排序;然后,取第二个增量d2<d1重复上述的分组和排序,直至所取的增量dt=1(dt<dt-l<…<d2<d1),即所有记录放在同一组中进行直接插入排序为止。该方法实质上是一种分组插入方法。
public class Test {
public static void main(String[] args) {
int[] a = { 2, 54, 12, 5, 98};
for (int i = 0; i< a.length; i++) {
System.out.print(a[i]+ " ");
}
System.out.println();
Test.shellSort(a);
for (int i = 0; i< a.length; i++) {
System.out.print(a[i]+ " ");
}
}
publicstatic void shellSort(int[] a) {
int d=a.length;
while(d>1){
d=(d+1)/2;
for(inti=0;i<a.length-d;i++){
if(a[i+d]<a[i]){
intt=a[i+d];
a[i+d]=a[i];
a[i]=t;
}
}
}
}
}
- java数据结构--插入排序
- 数据结构JAVA----插入排序
- 【java数据结构】插入排序
- 数据结构-插入排序 java实现
- java数据结构之插入排序
- 数据结构JAVA-----直接插入排序
- java数据结构排序之插入排序实现
- [Java数据结构]简单排序之插入排序
- java数据结构篇-插入排序算法
- 插入排序 Java数据结构与算法
- Java数据结构之插入排序算法
- <四>java数据结构与算法 插入排序
- 数据结构 JAVA描述(九) 插入排序
- Java数据结构与算法之插入排序
- 数据结构之插入排序的Java实现
- 数据结构之二分插入排序------java实现
- java数据结构与算法____插入排序
- JAVA数据结构:简单排序(冒泡,选择,插入)
- ------------------------获取所有存储过程的脚本------------------------------------
- 一天一练之快速排序算法
- SourceAnyWhere Standalone安装教程二:客户端的安装和配置
- linux中与Oracle有关的内核参数详解
- 潜心十年,修炼成编程高手
- java数据结构--插入排序
- 万能Makefile
- 调用webservice接口总结 写给接触webservice经验不多的学子们
- java数据结构--交换排序
- 使用ssh-keygen设置ssh无密码登录
- java数据结构--选择排序
- codeviz配置安装
- C++中的内存分配
- CSS实现带箭头的DIV