冒泡排序 例题:给出一组数将这组数按从小到大的顺序输出出来
程序员文章站
2022-04-04 11:11:57
...
冒泡排序 例题:给出一组数将这组数按从小到大的顺序输出出来
学习笔记,方便自己日后复习,也可供大家参考学习
冒泡排序百度上是这样定义的:
冒泡排序:它重复的走访过要排序的元素列,依次比较两个相邻元素,如果他们的顺序(如从大到小,首字母从A到Z)错误就把他们交换过来,走访元素的工作是重复的进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。这个算法的名字由来越大的元素会经由交换慢慢"浮"到数列的顶端(升序或降序排列),就如同碳酸饮料中的二氧化碳气泡最终会上浮到顶端一样,故名冒泡排序。
原理:每次比较相邻两数,小的交换到前面,每轮结束后最大的数交换到最后
思路:每一轮比较相邻两数,第一轮比较出最大数将最大数放在最后面,然后按照相同的方法第二轮比较出剩下的数中最大数,将这次比较出来的数也放在最后边(由于上一轮比较出来的最大数不参与比较,所以不作数),以此类推,开始比较第三轮、第四轮… 直到只剩下第一个数和第二个数相互比较,将这两个数比较完后这个元素列排序就为从小到大(也可以从大到小,我举的例子是排序从小到大),到这里,结束。
例题:给出一组数22,33,66,88,55,666,222,1024,360请将这组数按从小到大顺序排列。
思路图分析:
实现代码:
@Test
public void demo03() {
int[] numGroup= {22,33,66,88,55,666,222,1024,360};//定义一组正整数,该组数字进行排序
for (int i = 0; i < numGroup.length-1; i++) {//外层循环控制排序次数,第几轮
for (int j = 0; j < numGroup.length-1-i; j++) {//内层循环控制每一轮排序多少次
if(numGroup[j]>numGroup[j+1]) {
int max=numGroup[j];
numGroup[j]=numGroup[j+1];
numGroup[j+1]=max;
}
}
}
for (int i = 0; i < numGroup.length; i++) {
System.out.print(numGroup[i]+" ");
}
}
运行结果截图:
如果要求按从大到小排序的话就代码中最后遍历numGroup集合的时候让for循环中(int i = numGroup.length-1; i >=0; i–)或者在判断的时候将大于号改为小于号,把每一轮比较后的最小值放在最后面就可以 最后在输出就可以了。