利用堆排序排序算法對一個元素個數(shù)不少于20的隨機序列進行排序,輸出每趟排序的中間結(jié)果和每趟中關(guān)鍵字的比較次數(shù)和元素的移動次數(shù)。
來源:新能源網(wǎng)
時間:2024-08-17 13:29:11
熱度:
利用堆排序排序算法對一個元素個數(shù)不少于20的隨機序列進行排序,輸出每趟排序的中間結(jié)果和每趟中關(guān)鍵字的比較次數(shù)和元素的移動次數(shù)?!緦<医庹f】: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]; //這里是我輸入的數(shù)組長度。所以產(chǎn)生出的a.length就會等于x
// int[] a = new int[20];
System.out.println("數(shù)組元素個數(shù)為:"+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("比較次數(shù):" + (c + 1) * 2 + " 交換次數(shù):" + c);
}
}
}
-
放射性元素在能源、農(nóng)業(yè)、醫(yī)療、考古方面的應(yīng)用(高中化學(xué)必修2 P12第8題)2024-08-17
-
放射性元素在能源、農(nóng)業(yè)、醫(yī)療、考古方面的應(yīng)用(高中化學(xué)必修2P12第8題)2024-08-17
-
我買的美的凈水器過濾的水有沒有微量元素?微量元素達標嗎2024-08-17
-
我買的美的凈水器過濾的水有沒有微量元素?微量元素達標嗎2024-08-17
-
焦炭,生石灰,石灰石,純堿,燒堿是什么?化學(xué)元素符號是什么?2024-08-17
-
暗黑2 德魯依` 我想練個變形和召喚 元素不學(xué)。應(yīng)該怎么加屬性點和技能點2024-08-17
-
液化石油氣中一定含有什么元素2024-08-17
-
什么元素和焦炭在高溫下發(fā)生反應(yīng)可制成半導(dǎo)體材料?2024-08-17
-
龍之谷主火元素為什么不好2024-08-17
-
(化學(xué)--選修化學(xué)與技術(shù))海水中溶解了大量的氣體物質(zhì)和各種鹽類.人類在陸地上發(fā)現(xiàn)的100多種元素,在海2024-08-17
-
海水中溶解了大量的氣體物質(zhì)和各種鹽類.人類在陸地上發(fā)現(xiàn)的100多種元素,在海水中可以找到80多種.海洋2024-08-17
-
在高溫條件下焦炭可以把氧化鐵的鐵元素還原為單質(zhì)鐵,請算要使80噸氧化鐵完全還原,需要碳的質(zhì)量至少為多少2024-08-17
-
液化石油氣的主要成分是丙烷(C3H8).下面說法不正確的是A.每個丙烷分子中含有11個原子B.丙烷由3個碳原子、8個氫原子構(gòu)成C.丙烷中碳、2024-08-17
-
【查閱資料】(1)液化石油氣是一種主要含有C、H兩種元素的混合物,完全燃燒生成CO2和H2O,不完全燃燒時2024-08-17
-
用化學(xué)方法證明煤氣,液化石油氣,沼氣中都含有碳元素?2024-08-17