利用堆排序排序算法对一个元素个数不少于20的随机序列进行排序,输出每趟排序的中间结果和每趟中关键字的比较次数和元素的移动次数。
来源:新能源网
时间:2024-08-17 13:29:11
热度:
利用堆排序排序算法对一个元素个数不少于20的随机序列进行排序,输出每趟排序的中间结果和每趟中关键字的比较次数和元素的移动次数。【专家解说】:package com.help;imp
【专家解说】: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);
}
}
}
上一篇:电动车电池电池发热怎样处理?
-
放射性元素在能源、农业、医疗、考古方面的应用(高中化学必修2 P12第8题)2024-08-17
-
放射性元素在能源、农业、医疗、考古方面的应用(高中化学必修2P12第8题)2024-08-17
-
我买的美的净水器过滤的水有没有微量元素?微量元素达标吗2024-08-17
-
我买的美的净水器过滤的水有没有微量元素?微量元素达标吗2024-08-17
-
焦炭,生石灰,石灰石,纯碱,烧碱是什么?化学元素符号是什么?2024-08-17
-
暗黑2 德鲁依` 我想练个变形和召唤 元素不学。应该怎么加属性点和技能点2024-08-17
-
液化石油气中一定含有什么元素2024-08-17
-
什么元素和焦炭在高温下发生反应可制成半导体材料?2024-08-17
-
龙之谷主火元素为什么不好2024-08-17
-
(化学--选修化学与技术)海水中溶解了大量的气体物质和各种盐类.人类在陆地上发现的100多种元素,在海2024-08-17
-
海水中溶解了大量的气体物质和各种盐类.人类在陆地上发现的100多种元素,在海水中可以找到80多种.海洋2024-08-17
-
在高温条件下焦炭可以把氧化铁的铁元素还原为单质铁,请算要使80吨氧化铁完全还原,需要碳的质量至少为多少2024-08-17
-
液化石油气的主要成分是丙烷(C3H8).下面说法不正确的是A.每个丙烷分子中含有11个原子B.丙烷由3个碳原子、8个氢原子构成C.丙烷中碳、2024-08-17
-
【查阅资料】(1)液化石油气是一种主要含有C、H两种元素的混合物,完全燃烧生成CO2和H2O,不完全燃烧时2024-08-17
-
用化学方法证明煤气,液化石油气,沼气中都含有碳元素?2024-08-17