Java排序算法实现

[size=medium]
[b]温故而知新,可以为师矣![/b]
经常温故旧的知识,每次都有新的体会,这种感觉真的很好。
对于排序算法,面试中经常会被问道,因此我在这里做一个简单的小结,方便以后复习。

在引入排序算法之前,先介绍一下排序会用到的一些基础:
[b]交换数组中的两个元素:[/b]
用一个中间变量来存放需要交换的数。以下代码:
[/size]

/**
* 交换数组中的两个元素
* @param arrs 数组
* @param i 下标i
* @param j 小标j
*/
public static void swap(int[] arrs, int i, int j) {
int temp;// 临时变量
temp = arrs[i];
arrs[i] = arrs[j];
arrs[j] = temp;
}

[size=medium]
正式进入排序学习,排序算法有很多,今天只总结一下其中最常用的两种:
冒泡排序和选择排序。
[b]1.冒泡排序[/b]
冒泡排序最基本的原理就是:相邻交换。也就是说比较数组中相邻的元素,如果第一个元素比第二个元素大,则交换他们的位置。

1)代码实现:
[/size]

/**
* 冒泡排序:相邻交换(比较相邻元素,如果第一个比第二个大,就交换他们的位置)<p>
* 适用于排序小列表
* @param arrs
*/
public static void bubbleSortArray(int[] arrs){

for (int i=1; i< arrs.length; i++) {
for (int j=0; j<arrs.length-i; j++) {
if (arrs[j] > arrs[j+1]) {// 比较相邻元素
swap(arrs, j, j+1);// 交换元素
}
}

}
}

[size=medium]
2)图片分析:
[/size]
[img]http://dl2.iteye.com/upload/attachment/0095/7169/e22ccfe3-61f1-310b-b77a-6f436c06541d.jpg[/img]
[size=medium]
[b]2.选择排序[/b]
选择排序跟冒泡排序比较类似,冒泡排序只要发现两个元素是逆序的,则交换;而选择排序的原理是,只有当确定了元素是数组中最小的之后才会交换。
1)代码实现:
[/size]

/**
* 选择排序:每次最小/大排在相应的位置<p>
* 适用于排序小列表
* @param arrs
*/
public static void selectSortArray(int[] arrs){

for (int i=0; i<arrs.length-1; i++) { // 循环次数0~length-1
for (int j=i+1; j<arrs.length; j++) {// 循环次数i+1~length
if (arrs[i] > arrs[j]) {
swap(arrs, i, j);// 交换元素
}
}
}
}

[size=medium]
2)图片分析
[/size]
[img]http://dl2.iteye.com/upload/attachment/0095/7175/59e27b4f-a9ab-3979-85df-e46e7dd809a8.jpg[/img]
[size=medium]
其实选择排序就是:
1、用数组中的第1个元素去跟数组中第二个元素往后的每一个元素进行比较,得出最小的数放在数组的第1位;
2、接着用数组中的第2个元素去跟数组中的第3个元素往后的每一个元素进行比较,得出第二小的元素放在数组的第2位;
3、以此类推,直到数组排序完毕。
[/size]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值