#冒泡排序以及优化
Java实现冒泡排序算法
冒泡排序算法类似于将一排人从高到低或者从低到高排序。
假设从低到高排序:
一、从排头开始1号和2号人相比,若1号高于2号就交换位置,否则不要交换位置。
二、2号和3号相比重复步骤一的比较。
三、一直重复步骤一和步骤二直到比较到最后一个人。
执行完一次以上三步的时候,就能将最高的一个人排到最后的位置。
再执行一次步骤一、二和三,就能将第二高的人排到倒数第二的位置。
若有n个人排序执行n次即可将所有人排好。
代码实现:
package HLJuniversity.RG.Learn.practice2;
import java.util.Arrays;
/**
* 冒泡排序以及优化
*
* @author RG
*
*/
public class LRank_TestBubbleSort {
// 主函数入口
public static void main(String[] args) {
int[] LRank_values = { 100, 1, 11, 2, 10, 0, 7, 4, 5, 8 };// 定义一个整型数组。
LRank_values = LRank_Rank2(LRank_values);
System.out.println(Arrays.toString(LRank_values));
}
// 排序方法 没有优化
public static int[] LRank_Rank(int[] LRank_a) {
int LRank_help = 0;
for (int i = 0; i <= LRank_a.length - 1; i++) {
for (int j = 0; j <= LRank_a.length - 2; j++) {
if (LRank_a[j] > LRank_a[j + 1]) {// 如果前面一个数大于后面一个数就交换位置
LRank_help = LRank_a[j];
LRank_a[j] = LRank_a[j + 1];
LRank_a[j + 1] = LRank_help;
}
}
}
return LRank_a;
}
// 排序方法 有优化1
public static int[] LRank_Rank1(int[] LRank_a) {
int LRank_help = 0;
for (int i = 0; i <= LRank_a.length - 1; i++) {
for (int j = 0; j <= LRank_a.length - 2-i; j++) {
//执行完 外层i次循环后LRank_a.length - 2-i后的数不需要再次排序
if (LRank_a[j] > LRank_a[j + 1]) {// 如果前面一个数大于后面一个数就交换位置
LRank_help = LRank_a[j];
LRank_a[j] = LRank_a[j + 1];
LRank_a[j + 1] = LRank_help;
}
}
}
return LRank_a;
}
// 排序方法 在优化1的基础上再优化
public static int[] LRank_Rank2(int[] LRank_a) {
int LRank_help = 0;
for (int i = 0; i <= LRank_a.length - 1; i++) {
boolean LRank_judge = true;
for (int j = 0; j <= LRank_a.length - 2-i; j++) {
if (LRank_a[j] > LRank_a[j + 1]) {// 如果前面一个数大于后面一个数就交换位置
LRank_judge = false;// 只要一执行内层j的循环的if语句就会将LRank_judge设置为false
LRank_help = LRank_a[j];
LRank_a[j] = LRank_a[j + 1];
LRank_a[j + 1] = LRank_help;
}
}
if(LRank_judge==true) {
break;
}
/*在外层循环第i次中 若整个内层循环没有执行if (LRank_a[j] > LRank_a[j + 1])里面的语句
* 则可以认为已经排好顺序
*/
}
return LRank_a;
}
}
若要粘贴代码,请不要粘贴
package HLJuniversity.RG.Learn.practice2;
这是包的位置每个人设置的都不一样。