Y[j]=X[j];
}
private static void merge(int[] X, int[] Y, int m, int r, int n)//一次归并
{
int i=m, j=r, k=m;
while (irjr+njX.length)//将X中两个相邻子序列归并到Y中
if (X[i]X[j])//较小值复制到Y中
Y[k++]=X[i++];
else
Y[k++]=X[j++];
while (ir)//将前一个子序列剩余元素复制到Y中
Y[k++]=X[i++];
while (jr+njX.length)//将后一个子序列剩余元素复制到Y中
Y[k++]=X[j++];
}
public static void main(String[] args)
{
//int[] table = {52,26,97,19,66,8,49};//Array.random(9);{49,65,13,81,76,97,38,49};////{85,12,36,24,47,30,53,91,76};//;//{4,5,8,1,2,7,3,6};// {32,26,87,72,26,17};//
int[] table = {13,27,38,49,97,76,49,81};//最小堆
System.out.print("关键字序列: ");
Array.print(table);
//Array.insertSort(table);
//Array.shellSort(table);
//Array.bubbleSort(table);
//Array.quickSort(table);
//Array.selectSort(table);
//Array.heapSort(table);
//Array.mergeSort(table);
System.out.println("最小堆序列? "+Array.isMinHeap(table));
}
//第9章习题
public static boolean isMinHeap(int[] table)//判断一个数据序列是否为最小堆
{
if (table==null)
return false;
int i = table.length/2 -1;//最深一棵子树的根结点
while (i=0)
{
int j=2*i+1;//左孩子
if (jtable.length)
if (table[i]table[j])
return false;
else
if (j+1table.lengthtable[i]table[j+1])//右孩子
return false;
i--;
}
return true;
}
}
/*
程序运行结果如下:
关键字序列:32 26 87 72 26 17 8 40
直接插入排序
第1趟排序:26 32 87 72 26 17 8 40
第2趟排序:26 32 87 72 26 17 8 40
第3趟排序:26 32 72 87 26 17 8 40
第4趟排序:26 26 32 72 87 17 8 40//排序算法稳定
第5趟排序:17 26 26 32 72 87 8 40
第6趟排序:8 17 26 26 32 72 87 40
第7趟排序:8 17 26 26 32 40 72 87
关键字序列:42 1 74 25 45 29 87 53
直接插入排序
第1趟排序:1 42 74 25 45 29 87 53
第2趟排序:1 42 74 25 45 29 87 53
第3趟排序:1 25 42 74 45 29 87 53
第4趟排序:1 25 42 45 74 29 87 53
第5趟排序:1 25 29 42 45 74 87 53
第6趟排序:1 25 29 42 45 74 87 53
第7趟排序:1 25 29 42 45 53 74 87
关键字序列:21 12 2 40 99 97 68 57
直接插入排序
第1趟排序:12 21 2 40 99 97 68 57
第2趟排序:2 12 21 40 99 97 68 57
第3趟排序:2 12 21 40 99 97 68 57
第4趟排序:2 12 21 40 99 97 68 57
第5趟排序:2 12 21 40 97 99 68 57
第6趟排序:2 12 21 40 68 97 99 57
第7趟排序:2 12 21 40 57 68 97 99
关键字序列:27 38 65 97 76 13 27 49 55 4
希尔排序
delta=513 27 49 55 4 27 38 65 97 76
delta=24 27 13 27 38 55 49 65 97 76
delta=14 13 27 27 38 49 55 65 76 97
关键字序列:49 38 65 97 76 13 27 49 55 4//严书
希尔排序
delta=513 27 49 55 4 49 38 65 97 76
delta=24 27 13 49 38 55 49 65 97 76//与严书不同
delta=14 13 27 38 49 49 55 65 76 97
关键字序列:65 34 25 87 12 38 56 46 14 77 92 23
希尔排序
delta=656 34 14 77 12 23 65 46 25 87 92 38
delta=356 12 14 65 34 23 77 46 25 87 92 38
delta=112 14 23 25 34 38 46 56 65 77 87 92
关键字序列:84 12 43 62 86 7 90 91
希尔排序
delta=484 7 43 62 86 12 90 91
delta=243 7 84 12 86 62 90 91
delta=17 12 43 62 84 86 90 91
关键字序列:32 26 87 72 26 17
冒泡排序
第1趟排序:26 32 72 26 17 87
第2趟排序:26 32 26 17 72 87
第3趟排序:26 26 17 32 72 87
第4趟排序:26 17 26 32 72 87
第5趟排序:17 26 26 32 72 87
关键字序列:1 2 3 4 5 6 7 8
冒泡排序
第1趟排序:1 2 3 4 5 6 7 8
推荐阅读
- canvas游戏开发思维,canvas做游戏
- 抖音手机壁纸怎么去除字,苹果手机抖音没有动态壁纸选项
- apex竞速游戏怎么开启,apex怎么开启帧数
- js对象数组去重,js数组中的对象去重合并
- mysql表误删怎么办 mysql不小心删除了表
- chatgpt无效的url,chatGPT授权码无效
- asp.net获取当前窗口,aspnet弹出窗口选择
- 蓬安天然气关注公众号,蓬安天然气电话
- php列出数据库中图片 php读取图片并输出