黑马程序员技术交流社区
标题:
数组排序 希尔排序代码??
[打印本页]
作者:
代瑞朋
时间:
2013-11-21 12:14
标题:
数组排序 希尔排序代码??
本帖最后由 代瑞朋 于 2013-11-22 09:47 编辑
对给定数组进行排序。
{5,1,6,4,2,8,9} 可以是选择排序 冒泡排序。 老师说最快的是希尔排序
求希尔排序代码 ?参考
作者:
likeermei
时间:
2013-11-22 01:41
直接百度 希尔排序涉及的算法不是我们能够理解的
作者:
陈文杰
时间:
2013-11-22 02:07
public class shellsort {
static void sort(int[]a,int dk){
int i,j,temp;
for(i=dk;i<a.length;i++){
if(a[i]<a[i-dk]){
temp=a[i];
a[i]=a[i-dk];
for(j=i;j>0&&temp<a[j-1];j=j-dk){
a[j]=a[j-1];
}
a[j]=temp;
}
}
}
public static void main(String args[]){
int[]a={5,1,6,4,2,8,9};
int w=1;
while(w<=a.length/5){
sort(a,w);
w=w*5+1;
}
for(int i=0;i<a.length;i++){
System.out.print(a[i]+" ");
}
}
}
作者:
简★零度
时间:
2013-11-22 02:21
希尔排序:先取一个小于n的整数d1作为第一个增量,把文件的全部记录分成(n除以d1)个组。所有距离为d1的倍数的记录放在同一个组中。先在各组内进行直接插入排序;然后,取第二个增量d2<d1重复上述的分组和排序,直至所取的增量dt=1(dt<dt-l<…<d2<d1),即所有记录放在同一组中进行直接插入排序为止。,
package cn.itcase;
import java.util.Arrays;//导包
public class SortTest {//测试类
public static void main(String[] args) {
int[] arr = { 2, 5, 3, 1, 4 };//定义字符串
System.out.println("排序前:" +Arrays.toString(arr));
ShellSort.sort(arr);
System.out.println("排序后:" + Arrays.toString(arr));
}
/*
* 交换数组中的两个元素
*/
public static void swap(int[] data, int i, int j) {
int temp = data[i];
data[i] = data[j];
data[j] = temp;
}
}
class ShellSort {//定义自定义类
public static void sort(int[] data) {
for (int i = data.length / 2; i > 2; i /= 2) {
for (int j = 0; j < i; j++) {
insertSort(data, j, i);
}
}
insertSort(data, 0, 1);
}
/**
* @param data
* @param j
* @param i
*/
private static void insertSort(int[] data, int start, int inc) {
for (int i = start + inc; i < data.length; i += inc) {//循环
for (int j = i; (j >= inc) && (data[j] < data[j - inc]); j -= inc) {//循环判断
SortTest.swap(data, j, j - inc);
}
}
}
}
复制代码
作者:
徐君
时间:
2013-11-22 10:37
public class Shell
{
public void shell_sort(int [] arrays){
for(int d=5;d>0;d=d-2){
for(int c=0;c<arrays.length-d;c++){
for(int i=c;i<arrays.length;i=i+d){
for(int j=i;j>0;j=j-d){
if(j<d)
break;
if(arrays[j]<arrays[j-d]){
int tmp;
tmp=arrays[j];
arrays[j]=arrays[j-d];
arrays[j-d]=tmp;
}
}
}
}
sop(arrays);
}
}
public void sop(int[] arrays){
for(int i=0;i<arrays.length;i++){
System.out.print(arrays[i]+" ");
}
System.out.println();
}
public static void main(String[] args)
{
Shell s=new Shell();
int[] a={5,1,6,4,2,8,9};
s.shell_sort(a);
}
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2