热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

冒泡+快速+堆排序

packagexie.struct;importjava.util.ArrayList;publicclassSort<TextendsComparable<T>&g
package xie.struct;

import java.util.ArrayList;

public class Sortextends Comparable> {
public static final int QuickSort = 1;
public static final int SelectMin = 4;
public static final int MaoPao = 3;
public static final int HeapSort = 2;


private ArrayList data;//数据存储

public Sort() {
}

public void runSort(int mode) {
switch (mode) {
case 1:
System.out.println(
"快速排序输出:");
this.QuickSort(data, 0, data.size() - 1);
break;
case 2:
System.out.println(
"堆排序输出:");
this.heapSort();
break;
case 3:
System.out.println(
"冒泡排序输出:");
this.MaoPao();
break;
case 4:
break;
default:
break;
}
}

public void setData(ArrayList a) {
this.data = a;
}

public void addData(T data) {
this.data.add(data);
}

public String toString() {
for (int i = 0; i )
System.out.print(data.get(i) + "/");
return null;

}

public void MaoPao()
{
int i,j;
int n=this.data.size();
for(i=0;i)
for(j=1;j){
if(this.data.get(j-1).compareTo(this.data.get(j))>0)
{
T swap
=this.data.get(j);
this.data.set(j,this.data.get(j-1));
this.data.set(j-1,swap);
}
}
}



/*
* 快速排序代码
*/
private void QuickSort(ArrayList a, int left, int right) {
if (left < right) {
int low = left;
int high = right;
T key
= a.get(low);
while (low < high) {
while (low = 0)
high
--;
a.set(low, a.get(high));
while (low )
low++;
a.set(high, a.get(low));
}
a.set(low, key);
QuickSort(a, left, low
- 1);
QuickSort(a, low
+ 1, right);
}
}

/*
*
* 堆排序函数代码
*/

private void buildHeap() {
int len = this.data.size();
int i;
for (i = len / 2 - 1; i >= 0; i--)
this.adjustHeap(i);

}

private void adjustHeap(int index) {
int len = this.data.size();
int left = index * 2 + 1;
int right = index * 2 + 2;
int smaller = left;
T swap;
if (left > len - 1)
return;
if (right < len
&& this.data.get(left).compareTo(this.data.get(right)) > 0) {
smaller
= right;
}
if (smaller < len
&& this.data.get(index).compareTo(this.data.get(smaller)) > 0) {
swap
= this.data.get(smaller);
this.data.set(smaller, this.data.get(index));
this.data.set(index, swap);
this.adjustHeap(smaller);
}
}

private void heapSort() {
this.buildHeap();
int len = this.data.size();
while (len > 0) {
System.out.print(
this.data.get(0)+"/");
this.data.set(0, this.data.get(len - 1));
this.data.remove(len - 1);
len
--;
this.adjustHeap(0);
}
}

/*
*
* 测试代码
*/

public static void main(String args[]) {
ArrayList
array = new ArrayList();
array.add(
"A");
array.add(
"D");
array.add(
"G");
array.add(
"H");
array.add(
"S");
array.add(
"J");
array.add(
"B");
Sort
sort = new Sort();
sort.setData(array);
sort.runSort(Sort.QuickSort);
sort.toString();

sort.setData(array);
sort.runSort(Sort.MaoPao);
sort.toString();

sort.setData(array);
sort.runSort(Sort.HeapSort);
}
}

 

快速排序输出:
A/B/D/G/H/J/S/

冒泡排序输出:
A/B/D/G/H/J/S/

堆排序输出:
A/B/D/G/H/J/S/


推荐阅读
  • 本文介绍了如何使用Python爬取妙笔阁小说网仙侠系列中所有小说的信息,并将其保存为TXT和CSV格式。主要内容包括如何构造请求头以避免被网站封禁,以及如何利用XPath解析HTML并提取所需信息。 ... [详细]
  • 普通树(每个节点可以有任意数量的子节点)级序遍历 ... [详细]
  • 本文介绍了 Go 语言中的高性能、可扩展、轻量级 Web 框架 Echo。Echo 框架简单易用,仅需几行代码即可启动一个高性能 HTTP 服务。 ... [详细]
  • 一个建表一个执行crud操作建表代码importandroid.content.Context;importandroid.database.sqlite.SQLiteDat ... [详细]
  • C#实现文件的压缩与解压
    2019独角兽企业重金招聘Python工程师标准一、准备工作1、下载ICSharpCode.SharpZipLib.dll文件2、项目中引用这个dll二、文件压缩与解压共用类 ... [详细]
  • Spring Data JdbcTemplate 入门指南
    本文将介绍如何使用 Spring JdbcTemplate 进行数据库操作,包括查询和插入数据。我们将通过一个学生表的示例来演示具体步骤。 ... [详细]
  • Hadoop的文件操作位于包org.apache.hadoop.fs里面,能够进行新建、删除、修改等操作。比较重要的几个类:(1)Configurati ... [详细]
  • Spring – Bean Life Cycle
    Spring – Bean Life Cycle ... [详细]
  • Java设计模式详解:解释器模式的应用与实现
    本文详细介绍了Java设计模式中的解释器模式,包括其定义、应用场景、优缺点以及具体的实现示例。通过音乐解释器的例子,帮助读者更好地理解和应用这一模式。 ... [详细]
  • 自然语言处理(NLP)——LDA模型:对电商购物评论进行情感分析
    目录一、2020数学建模美赛C题简介需求评价内容提供数据二、解题思路三、LDA简介四、代码实现1.数据预处理1.1剔除无用信息1.1.1剔除掉不需要的列1.1.2找出无效评论并剔除 ... [详细]
  • python模块之正则
    re模块可以读懂你写的正则表达式根据你写的表达式去执行任务用re去操作正则正则表达式使用一些规则来检测一些字符串是否符合个人要求,从一段字符串中找到符合要求的内容。在 ... [详细]
  • 包含phppdoerrorcode的词条 ... [详细]
  • Android 自定义 RecycleView 左滑上下分层示例代码
    为了满足项目需求,需要在多个场景中实现左滑删除功能,并且后续可能在列表项中增加其他功能。虽然网络上有很多左滑删除的示例,但大多数封装不够完善。因此,我们尝试自己封装一个更加灵活和通用的解决方案。 ... [详细]
  • 如果应用程序经常播放密集、急促而又短暂的音效(如游戏音效)那么使用MediaPlayer显得有些不太适合了。因为MediaPlayer存在如下缺点:1)延时时间较长,且资源占用率高 ... [详细]
  • JUC(三):深入解析AQS
    本文详细介绍了Java并发工具包中的核心类AQS(AbstractQueuedSynchronizer),包括其基本概念、数据结构、源码分析及核心方法的实现。 ... [详细]
author-avatar
大廷705
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有