当前位置: 首页 > 专家说 > 太阳能 > 正文

利用堆排序排序算法对一个元素个数不少于20的随机序列进行排序,输出每趟排序的中间结果和每趟中关键字的比较次数和元素的移动次数。

关注热度:186
相关推荐 你可能关注 点击排行 我要评论

【专家解说】:package com.help;import java.util.Scanner;public class VariableSort { public static void main(String[] args) { Scanner input = new Scanner(System.in); int x = input.nextInt(); int[] a = new int[x]; //这里是我输入的数组长度。所以产生出的a.length就会等于x // int[] a = new int[20]; System.out.println("数组元素个数为:"+x); for (int i = 0; i < 20; ++i) a[i] = (int) (Math.random() * 10); heapSort(a); } static void swap(int[] a, int x, int y) { int t = a[x]; a[x] = a[y]; a[y] = t; } static int maxHeapify(int[] a, int i, int n) { int l, r, c = 0, m; do { r = 2 * (i + 1); l = r - 1; m = l < n && a[l] > a[i] ? l : i; m = r < n && a[r] > a[m] ? r : m; if (m != i) { swap(a, m, i); ++c; i = m; } else break; } while (true); return c; } static void heapSort(int[] a) { int n = a.length; int c = 0; for (int i = (n - 1) / 2; i >= 0; --i) maxHeapify(a, i, n); for (int i = n - 1; i > 0; --i) { swap(a, 0, i); c = maxHeapify(a, 0, --n); for (int j = 0; j < a.length; ++j) System.out.print(a[j] + " "); System.out.println("比较次数:" + (c + 1) * 2 + " 交换次数:" + c); } } }

进一步了解相关内容你可以在站内搜索以下相关问题

  • 编写程序使用快速排序算法对数组中的数据进行降序排序。要求...
  • 用随机函数产生20个100以内的整数, 利用合并排序算法完成这...
  • 求高手解决啊:随机产生n个数,用快速排序算法进行排序,并记录...
  • 对1000W个元素,元素大小在0-999之间的随机数的数组进行排序...
 
关键词: 元素 次数

[ 专家说搜索 ]  [ 加入收藏 ]  [ 告诉好友 ]  [ 打印本文 ]  [ 违规举报 ]  [ 关闭窗口 ]
 
相关专家说推荐
 
0条 [查看全部]  相关评论
 
相关资讯
热门推荐
 
 
网站首页 | 联系我们 | 排名推广 | 广告服务 | 积分换礼 | 网站留言