希尔排序,选择排序,插入排序 java
来源:互联网 发布:地面站软件下载 编辑:程序博客网 时间:2024/05/19 20:21
package sort;
public class Test1insert {
/**
* 插入排序
*/
public static void main(String[] args) {
Integer[] array = new Integer[] { 1, 3, 1, 4, 2, 4, 2, 3, 2, 4, 7, 6, 6, 7, 5, 5, 7, 7 };
/*for (int i = 0; i < array.length; i++) {
for (int j = i; j>0; j--) {
if(array[j].compareTo(array[j-1])<0){
int min=j-1;
swap(array,j,min);
}
}
}
for (int i = 0; i < array.length; i++) {
System.out.println(array[i]);
}*/
int n = array.length;
for (int i = 0; i < n; i++)
{
int min = i;
//从第i+1个元素开始,找最小值
for (int j = i + 1; j < n; j++)
{
if (array[min].compareTo(array[j]) > 0)
min = j;
}
//找到之后和第i个元素交换
swap(array, i, min);
}
}
private static void swap(Integer[] array, int j, int min) {
int temp =array[min];
array[min]=array[j];
array[j]=temp;
}
}
package sort;
public class Test {
public static void main(String[] args) {
Integer[] array = new Integer[] { 1, 3, 1, 4, 2, 4, 2, 3, 2, 4, 7, 6, 6, 7, 5, 5, 7, 7 };
/**
* 希尔排序
* 希尔排序也称之为递减增量排序,他是对插入排序的改进。在第二部插入排序中,
* 我们知道,插入排序对于近似已排好序的序列来说,
* 效率很高,可以达到线性排序的效率。但是插入排序效率也是比较低的,
* 他一次只能将数据向前移一位。比如如果一个长度为N的序列,最小的元素如果恰巧在末尾
* ,那么使用插入排序仍需一步一步的向前移动和比较,要N-1次比较和交换。
希尔排序通过将待比较的元素划分为几个区域来提升插入排序的效率。
这样可以让元素可以一次性的朝最终位置迈进一大步,然后算法再取越来越小的步长进行排序,
最后一步就是步长为1的普通的插入排序的,但是这个时候,整个序列已经是近似排好序的,所以效率高。
*/
int n= array.length;
int h=1;//步长
while(h<n/3)
//System.out.println(h);
h=h*3+1;
// System.out.println(h);
while(h>=1){
System.out.println(h);
/// System.out.println("++++++++++++++++++");
for(int i=0;i<n;i++){
/* System.out.println(""+i);
System.out.println("aaaa");*/
for(int j=i;j>=h;j=j-h ){
//System.out.println(""+(j-h));
if(array[j].compareTo(array[j-h])<0){
System.out.println("---------------"+(j-h));
swap(array,j,j-h);
// System.out.print(array[i]);
}else{
break;
}
}
}
h=h/3;
}
/* for (int i = 0; i < array.length; i++) {
System.out.println(array[i]);
}*/
}
private static void swap(Integer[] array, int i, int min)
{
Integer temp = array[i];
array[i] = array[min];
array[min] = temp;
}
}
public class Test {
public static void main(String[] args) {
Integer[] array = new Integer[] { 1, 3, 1, 4, 2, 4, 2, 3, 2, 4, 7, 6, 6, 7, 5, 5, 7, 7 };
/**
* 希尔排序
* 希尔排序也称之为递减增量排序,他是对插入排序的改进。在第二部插入排序中,
* 我们知道,插入排序对于近似已排好序的序列来说,
* 效率很高,可以达到线性排序的效率。但是插入排序效率也是比较低的,
* 他一次只能将数据向前移一位。比如如果一个长度为N的序列,最小的元素如果恰巧在末尾
* ,那么使用插入排序仍需一步一步的向前移动和比较,要N-1次比较和交换。
希尔排序通过将待比较的元素划分为几个区域来提升插入排序的效率。
这样可以让元素可以一次性的朝最终位置迈进一大步,然后算法再取越来越小的步长进行排序,
最后一步就是步长为1的普通的插入排序的,但是这个时候,整个序列已经是近似排好序的,所以效率高。
*/
int n= array.length;
int h=1;//步长
while(h<n/3)
//System.out.println(h);
h=h*3+1;
// System.out.println(h);
while(h>=1){
System.out.println(h);
/// System.out.println("++++++++++++++++++");
for(int i=0;i<n;i++){
/* System.out.println(""+i);
System.out.println("aaaa");*/
for(int j=i;j>=h;j=j-h ){
//System.out.println(""+(j-h));
if(array[j].compareTo(array[j-h])<0){
System.out.println("---------------"+(j-h));
swap(array,j,j-h);
// System.out.print(array[i]);
}else{
break;
}
}
}
h=h/3;
}
/* for (int i = 0; i < array.length; i++) {
System.out.println(array[i]);
}*/
}
private static void swap(Integer[] array, int i, int min)
{
Integer temp = array[i];
array[i] = array[min];
array[min] = temp;
}
}
阅读全文
0 0
- 希尔排序,选择排序,插入排序 java
- Java排序之选择排序、插入排序、希尔排序
- Java实现选择排序、插入排序、希尔排序算法
- 冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序、堆排序java实现
- 选择排序、插入排序、希尔排序
- 选择排序&插入排序&希尔排序
- 选择排序,插入排序,希尔排序
- 选择排序、插入排序、希尔排序总结
- Java数组排序(冒泡,选择,插入,希尔)
- java插入,希尔,快速,冒泡,选择排序
- 【插入排序】希尔排序--Java
- 【排序】冒泡排序、选择排序、插入排序、希尔排序
- 排序-java实现的选择/插入/希尔排序
- 冒泡--选择--插入--希尔排序
- Java实现八个常用的排序算法:插入排序、冒泡排序、选择排序、希尔排序等
- java排序-插入排序、希尔排序
- C#冒泡排序、选择排序、插入排序和希尔排序
- 初级排序算法(选择排序、插入排序、希尔排序)
- 读入读出优化
- JDBC Java数据库连接 1 2017年12月19日 22:37:42
- bzoj 1562: [NOI2009]变换序列 二分图最大匹配
- 基于freertos的xTaskUntilDelay函数问题解析
- 探索 ConcurrentHashMap 高并发性的实现机制
- 希尔排序,选择排序,插入排序 java
- Win10与ubuntu双系统,卸载ubuntu后,出现no such partition 后的修复办法
- 【java基础:JDBC】基于DPCP连接池工具包和DBUtils工具包的数据库改查Demonstration
- Android GUI系统-ViewTree的创建(二)
- 正则表达式(Java版整理)
- 这是我的第一篇博客,以后要积极更新哦
- Mysql 充电站SQL查询1--171221--mysql-sql
- 破解简单的Android签名检查
- 堆排序