堆排序,选择排序,冒泡排序

堆排序,选择排序,冒泡排序的三种排序

package experiment;

import java.util.Arrays;
import java.util.Scanner;

public class experiment_02 {
//堆排序
//使堆母结点大于两个子节点
public static void heapify(int a[],int n,int i) {
int c1 = 2 * i 1;//子节点1
int c2 = 2 * i 2;//子节点2
int max = i;
//比较母结点与两个子节点的大小
if(c1 < n && a[c1] > a[max]) {
max = i;
}
if(c2 < n && a[c2] > a[max]) {
max = i;
}
if(max!=i) {
//若max改变进行交换
swap(a,max,i);
//对其子节点继续进行 使母结点大于两个子节点 递归试其最终整个堆符合
heapify(a,n,max);
}
}
//建堆
public static void heap_build(int[] a,int n) {
int last_node = n-1;
int parent = (last_node - 1)/2;
int i ;
for(i = parent;i >= 0;i–) {
heapify(a,n,i);
}
}
//进行堆排序
public static void heap(int[] a,int n) {
heap_build(a,n);
for(int i = n-1;i >= 0;i–) {
swap(a,i,0);
heapify(a,i,0);
}
System.out.println(“堆排序后为” Arrays.toString(a));
}
// //冒泡排序(两两进行比较)
// public static void bubble(int a[],int n) {
// for(int j = 0;j < n-1;j ) {
// if(j == (n-1)) {
// break;
// }
// for(int t = 0;t<n-1-j;t ) {
// if(a[t] > a[t 1]) {
// int temp = a[t];
// a[t] = a[t 1];
// a[t 1] = temp;
// }
//
// }
// }
// System.out.println(“冒泡排序后为” Arrays.toString(a));
// }
选择排序(从无序数组中选出最小元素 然后不断循环)
// public static void select(int[] a,int n) {
// for(int q = 0;q<n-1;q ) {
// int index = q;
// int e;
// for(e = q 1;e<n;e ) {
// if(a[e]<a[index]) {
// index = e;
// }
// }
// int temp = a[index];
// a[index] = a[q];
// a[q] = temp;
// }
// System.out.println(“选择排序后为” Arrays.toString(a));
// }
public static void swap(int a[],int b,int c) {
int d = a[b];
a[b] = a[c];
a[c] = d;
}
public static void main(String[] args) throws Exception {
System.out.println(“请输入排序总数”);
Scanner s = new Scanner(System.in);
int n = s.nextInt();
int[] a = new int[n];
for(int i = 0;i<n;i ) {
a[i] = s.nextInt();
}
System.out.println(“无序数组为” Arrays.toString(a));
// bubble(a,n);
// select(a,n);
heap(a,n);
}
}

来源:https://www.icode9.com/content-4-903001.html

(0)

相关推荐

  • Java基础之:Math & Arrays & System

    Math Math 类包含用于执行基本数学运算的方法,如初等指数.对数.平方根和三角函数. 方法介绍: 1.abs 绝对值 2.pow 求幂 3.ceil 向上取整,返回>=该参数的最小整数; ...

  • 冒泡排序、插入排序、选择排序、希尔排序

    排序是一个非常经典的问题,它以一定的顺序对一个数组(或一个列表)中的项进行重新排序(可以进行比较,例如整数,浮点数,字符串等)(增加,非递减,递减, 增加,词典等). 有许多不同的排序算法,每个都有其 ...

  • 什么是冒泡排序?什么是选择排序?它们之间有什么区别?

    什么是冒泡排序?什么是选择排序?它们之间有什么区别?

  • 选择排序(19)

    2021年全国五一表彰大会使用新版"全国五一劳动奖章".新版奖章设计主题为"时代先锋",根据"劳动最光荣,劳动最崇高,劳动最伟大,劳动最美丽" ...

  • 选择排序(20)

    ①灾民们吃上了久违的热饭,同时对这个有烧饭"黑科技"的大卡车产生了浓厚兴趣 ②还可以用于灾害救助和人道主义救援 ③这种车辆拥有现代化野战炊事能力,不仅可以为军队提供机动伙食供应 ④ ...

  • 选择排序(21)

    ①这里是进出B景区的必经之地,一到吃饭的时间,店铺门口常常车水马龙 ②景区外,L公路蜿蜒穿越山岭.森林,平均海拔超过3000米 ③旅游旺季,村民D一天要招待七八十桌客人 ④4月的B景区,白云绕青山,绿 ...

  • 选择排序(22)

    ①"这几年B景区的游客量每年都有显著增长."G县文化和旅游局副局长R说. ②"水上帆船等都大获好评."X省旅游股份有限公司负责人S说. ③当地景区顺势对旅游产品 ...

  • 选择排序(23)

    ①他们充满好奇,想象力丰富,具有非凡的思维创新力与文学创造力 ②以"鲲鹏"为名,是想表达对于当代优秀的青少年科幻作者和作品的期待 ③社长L介绍,鲲之大不知其几千里,鹏可扶摇直上九万 ...

  • 选择排序(24)

    ①以及致其他亲戚的家书3通 ②致弟弟周作人的书信19通 ③展现了一个身为儿子.身为丈夫.身为兄长的真实且有温度的鲁迅 ④致妻子许广平的书信78通 ⑤还首度收录了鲁迅致郦荔丞的书信 ⑥<鲁迅家书& ...

  • 选择排序(18)

    ①一能看穿130多亿光年的区域,接近宇宙边缘 ②它口径500米,发射面积相当于30个标准足球场那么大 ③"中国天眼"是什么 ④它能看多远 ⑤它是我国具有自主知识产权.用于探索宇宙的 ...