文档章节

简单排序——冒泡排序,选择排序,插入排序,对象排序

osDaniel
 osDaniel
发布于 2014/01/02 22:01
字数 627
阅读 36
收藏 0
点赞 0
评论 0

1)冒泡排序

package sort;



/**
 * 冒泡排序,每次把数组最大值送到未排序部分的最末端
 * @author Administrator
 *
 */
public class BubbleSort {
/**
* 输入:无序数组
* 输出:有序数组
* length代表数组的实际长度
*/
public int[] bubbleSort(int[] arrayNum,int length)
{
for(int i = length - 2 ; i >= 0; i --)
for(int j = 0; j <= i ; j ++)
{
if(arrayNum[j] > arrayNum[j+1])
{
int temp = arrayNum[j];
arrayNum[j] = arrayNum[j+1];
arrayNum[j+1] = temp;
}
}
return arrayNum;
}

public static void main(String[] args)
{
int[] arrayNum = {2,1,4,11,6,8,5};
arrayNum = new BubbleSort().bubbleSort(arrayNum,arrayNum.length);
for(int i = 0 ; i <= arrayNum.length - 1 ; i ++)
System.out.println(arrayNum[i]);
}

}


2)选择排序

package sort;


/**
 * 选择排序,每次选择未排序数组最小值跟未排序的最前端进行交换,交换后将之加入已排序部分
 * @author Administrator
 *
 */
public class SelectSort {
/**
* 输入:无序数组
* 输出:有序数组
*/
public int[] selectSort(int[] arrayNum, int length)
{
for(int i = 0 ; i <= length - 2; i ++)
for(int j = i+1; j <= length - 1; j++)
{
if(arrayNum[j] < arrayNum[i])
{
int temp = arrayNum[i];
arrayNum[i] = arrayNum[j];
arrayNum[j] = temp;
}
}
return arrayNum;
}

public static void main(String[] args)
{
int[] arrayNum = {2,1,4,11,6,8,5};
arrayNum = new SelectSort().selectSort(arrayNum,arrayNum.length);
for(int i = 0 ; i <= arrayNum.length - 1 ; i ++)
System.out.println(arrayNum[i]);
}
}

3)插入排序

package sort;
/**
 * 插入排序,建立前段为已排序部分(当然刚开始时是第一个元素),然后从已排序后面的第一个元素作为插入元素插到已排序部分
 * 插入方法是其前一个元素占用它的存储空间,以此类推
 * @author Administrator
 *
 */
public class InsertionSort {
public int[] insertionSort(int[] arrayNum,int length)
{
for(int sortedFlag = 1; sortedFlag <= length - 1; sortedFlag ++)
{
int temp = arrayNum[sortedFlag];
for(int insertFlag = 0 ; insertFlag <= sortedFlag - 1 ; insertFlag ++)
{
if(arrayNum[insertFlag] >= arrayNum[sortedFlag] )
{
for(int k = sortedFlag; k >= insertFlag+1 ; k--)
{
arrayNum[k] = arrayNum[k-1];
}
arrayNum[insertFlag] = temp;
}
}
}
return arrayNum;
}

public static void main(String[] args)
{
int[] arrayNum = {2,1,4,11,6,8,5};
arrayNum = new InsertionSort().insertionSort(arrayNum,arrayNum.length);
for(int i = 0 ; i <= arrayNum.length - 1 ; i ++)
System.out.println(arrayNum[i]);
}
}


4 )对象排序

package sort;
/**
 * 对对象元素进行排序,使用对象数组进行,核心排序方法使用插入排序思想,简单易实现还挺便捷。
 * @author Administrator
 *
 */
class Person
{
int id;
String label;

public Person(int id,String label)
{
this.id = id;
this.label = label;
}
}


public class ObjectSort {
public Person[] insertionObjectSort(Person[] personList, int length)
{
for(int sortFlag = 1; sortFlag <= length -1 ; sortFlag ++)
for(int insertFlag = 0; insertFlag <= sortFlag - 1 ; insertFlag ++)
{
Person tempPerson = new Person(personList[sortFlag].id,personList[sortFlag].label);
if(personList[sortFlag].id < personList[insertFlag].id)
{
for(int k = sortFlag; k >= insertFlag + 1 ; k --)
personList[k] = personList[k-1];
personList[insertFlag] = tempPerson;
}
}
return personList;
}

public static void main(String[] args)
{
Person[] personList = {new Person(3,"ZHAO"),new Person(8,"QIAN"),new Person(1,"SUN"),new Person(6,"LI"),new Person(11,"ZHOU"),new Person(4,"WU"),new Person(6,"ZHENG")};
personList = new ObjectSort().insertionObjectSort(personList,personList.length);
for(int i = 0 ; i <= personList.length - 1; i ++ )
System.out.println("ID = " + personList[i].id + ",LABEL = " + personList[i].label );
}
}



© 著作权归作者所有

共有 人打赏支持
osDaniel
粉丝 6
博文 37
码字总数 17120
作品 0
广州
排序算法

排序算法 冒泡排序 选择排序 插入排序 快速排序(最常见) 希尔排序 归并排序 源码:Sorting 冒泡排序 冒泡排序(Bubble Sort)是一种简单的排序算法。它重复地遍历要排序的数列,一次比较两...

廖少少
2017/06/08
0
0
白话经典算法系列之八 MoreWindows白话经典算法之七大排序总结篇

在我的博客对冒泡排序,直接插入排序,直接选择排序,希尔排序,归并排序,快速排序和堆排序这七种常用的排序方法进行了详细的讲解,并做成了电子书以供大家下载。下载地址为:http://downlo...

长平狐
2012/12/10
53
0
Java数据结构与算法(第三章简单排序)

如何排序? 这一章中主要是三个比较简单的算法:冒泡排序、选择排序和插入排序。计算机程序不能像人一样通览所有的数据。它只能根据计算机的“比较”操作原理,在同一时间内对来个数据项进行...

小风89
2015/10/22
142
0
Java数据结构和算法(三)——冒泡、选择、插入排序算法

1、冒泡排序   这个名词的由来很好理解,一般河水中的冒泡,水底刚冒出来的时候是比较小的,随着慢慢向水面浮起会逐渐增大,这物理规律我不作过多解释,大家只需要了解即可。   冒泡算法...

architect刘源源
02/23
0
0
[译] 排序算法入门 — Go 语言实现

[译] 排序算法入门 — Go 语言实现 Go语言学习园地博客2017-07-0915 阅读 go算法排序 排序算法是一种采用列表或数组并以特定顺序对其元素进行重新排序的算法。有几十种不同的排序算法,如果你...

Go语言学习园地博客
2017/07/09
0
0
一个Java小白通向数据结构算法之旅(7) - 简单排序总结

前言 昨天双,什么也没买。因为没有想到什么必需的用品,何况也没有钱。身为屌丝的我,只能敲敲代码,写一写总结,岂不美滋滋哉。今天看了《五亿探长雷洛》这部电影,非常喜欢刘德华饰演的雷...

cmazxiaoma
2017/11/12
0
0
各种基本算法实现小结(五)—— 排序算法

各种基本算法实现小结(五)—— 排序算法 (均已测试通过) 选择排序 |简单选择排序 |堆排序 |归并排序 交换排序 |冒泡排序 |快速排序 插入排序 |直接插入排序 |折半排序 |希尔排序 分配排序...

长平狐
2013/01/06
169
0
史上最简单!冒泡、选择排序的Python实现及算法优化详解

1、排序概念 内部排序和外部排序 根据排序过程中,待排序的数据是否全部被放在内存中,分为两大类: 内部排序:指的是待排序的数据存放在计算机内存中进行的排序过程; 外部排序:指的是排序...

马哥教育
2017/10/25
0
0
基本排序的实现与性能比较

基本排序的实现与性能比较 基本排序一般有:选择排序,插入排序,冒泡排序。 //专门的sort排序类 public class Sort {static boolean less(int a, int b){return a<b;} static void exch(int...

年少爱追梦
2016/03/05
75
0
数据结构与算法--排序之冒泡、选择、插入、希尔

数据结构与算法--排序之冒泡、选择、插入、希尔 我们关注的主要对象是重新排列数组元素的算法,每个元素都有一个主键,排序算法的目的是将所有元素按照某种方式排列,排列后索引大的元素的主...

sunhaiyu
2017/10/27
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

前端基础

1. get请求传参长度的误区 误区:我们经常说get请求参数的大小存在限制,而post请求的参数大小是无限制的。 实际上HTTP 协议从未规定 GET/POST 的请求长度限制是多少。对get请求参数的限制是...

wenxingjun
21分钟前
0
0
Android 复制和粘贴功能

做了一回搬运工,原文地址:https://blog.csdn.net/kennethyo/article/details/76602765 Android 复制和粘贴功能,需要调用系统服务ClipboardManager来实现。 ClipboardManager mClipboardM...

她叫我小渝
今天
0
0
拦截SQLSERVER的SSL加密通道替换传输过程中的用户名密码实现运维审计(一)

工作准备 •一台SQLSERVER 2005/SQLSERVER 2008服务 •SQLSERVER jdbc驱动程序 •Java开发环境eclipse + jdk1.8 •java反编译工具JD-Core 反编译JDBC分析SQLSERVER客户端与服务器通信原理 SQ...

紅顏為君笑
今天
6
0
jQuery零基础入门——(六)修改DOM结构

《jQuery零基础入门》系列博文是在廖雪峰老师的博文基础上,可能补充了个人的理解和日常遇到的点,用我的理解表述出来,主干出处来自廖雪峰老师的技术分享。 在《零基础入门JavaScript》的时...

JandenMa
今天
0
0
linux mint 1.9 qq 安装

转: https://www.jianshu.com/p/cdc3d03c144d 1. 下载 qq 轻聊版,可在百度搜索后下载 QQ7.9Light.exe 2. 去wine的官网(https://wiki.winehq.org/Ubuntu) 安装 wine . 提醒网页可以切换成中...

Canaan_
今天
0
0
PHP后台运行命令并管理运行程序

php后台运行命令并管理后台运行程序 class ProcessModel{ private $pid; private $command; private $resultToFile = ''; public function __construct($cl=false){......

colin_86
今天
1
0
数据结构与算法4

在此程序中,HighArray类中的find()方法用数据项的值作为参数传递,它的返回值决定是否找到此数据项。 insert()方法向数组下一个空位置放置一个新的数据项。一个名为nElems的字段跟踪记录着...

沉迷于编程的小菜菜
今天
1
1
fiddler安装和基本使用以及代理设置

项目需求 由于开发过程中客户端和服务器数据交互非常频繁,有时候服务端需要知道客户端调用接口传了哪些参数过来,这个时候就需要一个工具可以监听这些接口请求参数,已经接口的响应的数据,这种...

银装素裹
今天
0
0
Python分析《我不是药神》豆瓣评论

读取 Mongo 中的短评数据,进行中文分词 对分词结果取 Top50 生成词云 生成词云效果 看来网上关于 我不是药神 vs 达拉斯 的争论很热啊。关于词频统计就这些,代码中也会完成一些其它的分析任...

猫咪编程
今天
0
0
虚拟机怎么安装vmware tools

https://blog.csdn.net/tjcwt2011/article/details/72638977

AndyZhouX
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部