选择排序
步骤一、选取一组数据中起始位置(下标)上的数据,和其后的各个位置(下标)上数据进行比较;如果起始位置(下标)上的数据大(升序)或小(降序),就将两个位置上的数据进行交换;这样完成一轮比较之后,起始位置上的数据就是最小或最大了
步骤二、再次选取第二个位置上的数据,和其后各个位置上的数据进行比较。如此重复,就可将数据进行排序了。
实例:
package algorithm.sort;
/**
* 演示选择排序算法
* @author 学霸联盟 - 赵灿
*/
public class SelectionSortDemo {
public static void main(String[] args) {
//创建两个数组
int[] arr1 = { 3, 5, 1, 4, 2 };
/*
* 选择排序
* 顾名思义,从数组中按照顺序一个一个的选出来
* 升序排序:
* 第一步取出数组中下标为0的值,和后面每个值比较
* 如果小标为0值大于后面的值,则互换两个值,继续和后面的比
* 比完之后就可以保证下标为0的位置保持最小的值了
* 在取下标为1的值和后面的值一个一个比较,以此类推
*/
for (int i = 0; i < arr1.length - 1; i++) {
//取到倒数第二个值即可,最后一个后面没有其他值了,也就无需比较了
/*
* 内层循环拿后面的每一个值和外层循环取到的值比较
* 所以外层循环取下标为0处的值,这里第一次应该拿下标为1位置的值
* 外层循环取下标为1处的值,这里第一次应该拿下标为2位置的值
* 以此类推,得到j初始化时应该等于i+1
*/
for (int j = i+1; j < arr1.length; j++) {
//判断大小
if(arr1[i] > arr1[j]){
//注意:这里交换的是数组中的值
int temp = arr1[i];
arr1[i] = arr1[j];
arr1[j] = temp;
}
}
}
System.out.println("--- 选择排序法排序后 ---");
for (int i = 0; i < arr1.length; i++) {
System.out.print(arr1[i] + " ");
}
}
}
运行结果:
--- 选择排序法排序后 ---
1 2 3 4 5
冒泡排序
步骤一:选取一组数据中起始位置(下标)上的数据,和第二个位置上的数据进行比较,如果起始位置(下标)上的数据大(升序)或小(降序),就将两个位置上的数据进行交换;然后使用第二个位置上的数据,和第三个位置上的数据进行比较;第三个和第四个...直至最后一个,这样完成一轮比较,就使最后一个位置上的数据最大或最小
步骤二:仍然是选取起始位置上的数据,和第二个位置上的数据进行比较,直至倒数第二个数据;
以此类推,直至只剩下第一个和第二个数据进行比较,比较完成后结束。
实例:
package algorithm.sort;
/**
* 演示冒泡排序算法
* @author 学霸联盟 - 赵灿
*/
public class BubbleSortDemo {
public static void main(String[] args) {
//创建两个数组
int[] arr1 = { 3, 5, 1, 4, 2 };
/*
* 冒泡排序
* 顾名思义,像冒泡一样,越往上越大
* 升序排序:
* 第一步取出数组中下标为0的值,和后面相邻的值比较
* 如果后面的值小,交换两个值(相当于向上冒一个位置)
* 交换后继续用这个大的值和后面的值进行比较
* 以此类推,第一遍比较完成后,最大的值就在最后一个下标位置了
*/
for (int i = arr1.length - 1; i > 0 ; i--) {
//外层循环的作用是标识冒泡的结束位置,结束位置是依次向前移动的
/*
* 每次都从第一个值开始往上冒泡
* 知道冒至外层循环标识的结束位置为止
*/
for (int j = 0; j < arr1.length - 1; j++) {
//判断相邻两个值大小
if(arr1[j] > arr1[j + 1]){
//注意:这里交换的是数组中的值
int temp = arr1[j];
arr1[j] = arr1[j + 1];
arr1[j + 1] = temp;
}
}
}
System.out.println("--- 冒泡排序法排序后 ---");
for (int i = 0; i < arr1.length; i++) {
System.out.print(arr1[i] + " ");
}
}
}
运行结果:
--- 冒泡排序法排序后 ---
1 2 3 4 5
排序算法有很多很多,对于初学者,至少至少也要理解和熟练应用其中一种。
版权声明:本文为博主原创文章,未经博主允许不得转载。
分享到:
相关推荐
传统的冒泡排序法是这样操作:从前往后,依次比较两个相邻的元素,如果逆序则交换这两个元素值,然后继续往后操作;到了数据尾部时,就找出了一个最大值(或最小值)。然后重复上面的操作n-1次(n为元素个数)。相关...
学霸教育网站整站源码说明:由sdcms管理系统制作模板而来,请尊重原创。 后台地址:http://你的域名/iszxwadmin/ 管理账号:admin 密码:admin 学霸教育网站整站源码介绍: 本程序适合个人门户站、学校管理...
奥拉夫·舍韦的这本《超级学霸》就是教你如何开出正确的药方,来根治“学习不好”的病。 舍韦本来是一名天资平平、成绩中下的普通挪威学生,因为掌握了正确的学习方法,从普通学生一跃变成了超级学霸,成功考取了...
经典是排序方式,冒泡排序法实例。可以详细了解冒泡排序过程。
java排序 七.计数排序及其实现 八.基数排序及其实现 九. 桶排序及其实现 十. 堆排序及其实现 十一.二叉树排序及有序集合 十二.利用集合的4种排序排序方式
明明白白学Java大学霸
学霸快查助手是一款记录学习过程中的知识点,学习时能够快速查阅的学习软件,可以随时随地记录知识点,随时随地的快速查阅知识点,学霸快查软件就是专为学霸而生,提高学习效率,有需要的赶快下载吧! 学霸快查...
一个非常简单的快速排序算法!!!站长你好,我现在大四,需要下载一个tsplib的数据来跑蚁群算法的实验,由与查重的原因暂时不能把程序上传上来,可以先给我过吗,等答辩完我再上传程序,谢谢~
系统集成项目管理工程师-学霸一本通
学霸脑图--理科
二年级(下)语文学霸期末测评卷12套
译林版小学三年级英语下册专项复习--—句子排序.pdf
以堆排序算法为例,改变输入规模n,测试算法时间复杂度
我的钢笔是“学霸”
用户的个人帐户管理与设置栏目,你选择学习的年级、学科、教材版本可以在这里更改,查询与管理你的学习帐户的V币和经验值。 FAQ信箱 我的信箱 给学生与老师、学生与学生的一个交流平台,老师与学生在这个栏目中...
学霸课堂是一款学生课堂学习软件。软件包含:幼儿启蒙教育、小学、初中、高中 全部基本课程,基本课程为人教版。 学霸课堂软件特点 1:名校名师课堂讲解,够生动够详细,学生易掌握学习要点。 2:学习内容全面,除了...
SM2&SM3&SM4国密算法java源码
基于java实现的LSB算法,将txt文件的文字信息加密到载体图像,然后提取
超级有影响力的Java面试题大全文档 1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。...