【动手写排序】希尔排序
来源:互联网 发布:网络发票号怎么查询 编辑:程序博客网 时间:2024/05/18 03:55
import org.junit.Test;
public class ShellInsertSort {
public void sort(int[] arr){
int increment=arr.length/2;
while(increment>0){
for(int i=0;i<increment;i++){
for(int j=i+increment;j<arr.length;j+=increment){
int k=j;
while(k>i && arr[k]<arr[k-increment] ){
swap(arr,k,k-1);
k-=increment;
}
}
}
increment/=2;
}
}
public void swap(int[] arr,int i,int j){
int temp=arr[i];
arr[i]=arr[j];
arr[j]=temp;
}
@Test
public void test(){
int[] arr={9,8,7,6,4,5,3,1,2};
// int[] arr={4};
sort(arr);
for(int i:arr){
System.out.print(i+" ");
}
}
public class ShellInsertSort {
public void sort(int[] arr){
int increment=arr.length/2;
while(increment>0){
for(int i=0;i<increment;i++){
for(int j=i+increment;j<arr.length;j+=increment){
int k=j;
while(k>i && arr[k]<arr[k-increment] ){
swap(arr,k,k-1);
k-=increment;
}
}
}
increment/=2;
}
}
public void swap(int[] arr,int i,int j){
int temp=arr[i];
arr[i]=arr[j];
arr[j]=temp;
}
@Test
public void test(){
int[] arr={9,8,7,6,4,5,3,1,2};
// int[] arr={4};
sort(arr);
for(int i:arr){
System.out.print(i+" ");
}
}
}
复杂度:O(n3/2)
0 0
- 【动手写排序】希尔排序
- 【动手写排序】冒泡排序
- 【动手写排序】选择排序
- 【动手写排序】快速排序
- 【动手写排序】堆排序
- 【动手写排序】归并排序
- 动手实现 算法 之 “希尔排序”
- 【动手写排序】直接插入排序
- 无聊写排序之 ---- 希尔排序(ShellSort)
- python写希尔、堆、快速、归并排序
- 自己写了个希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- Android异步加载图片与文字(二)
- java中AWT和SWing的区别与联系
- 20150619_OC之NSFileManager文件管理器
- postgreSQL数据类型
- ROS, OPENCV3.0, cv_bridge包组合
- 【动手写排序】希尔排序
- 同步工具类(一)
- java的main()方法:0
- android.support.v7导入时候报values-v21.xml里面资源文件找不到
- 常用的JS插件介绍:1、qrcode——js二维码生成工具
- 基于OpenGL的Android系统视频转换功能实现
- MAC OS上切换python2与python3环境
- 20150619_OC之NSData及文件操作NSFileHandle
- Windows内核对象