冒泡排序(最优)
来源:互联网 发布:淘宝鸿星尔克优惠券 编辑:程序博客网 时间:2024/06/05 02:00
冒泡排序
它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。
package www.wtt.Test;
public class TestArray {
public static void main(String[]args) {
//冒泡排序
int[]nums = randomArray(10);
printArray(nums);
System.out.println("=======================");
bubbleSortSec(nums);
printArray(nums);
GirlFriend[] girlFriends =new GirlFriend[100];
girlFriends[0] =new GirlFriend("如花");
girlFriends[1] =new GirlFriend("芙蓉");
girlFriends[2] =new GirlFriend("玉凤");
}
public static void bubbleSortSec(int[]nums) {
for (int i = 0; i < nums.length - 1;i++) {
//第二个值确定时,所有的值已经确定
//定义一个变量记录交换的次数,如果次数为0,说明数组已经排序完成
int changeCount = 0;
//开始比较并交换
for (int j = 0; j < nums.length - 1 -i; j++) {
//最大值不需要再次比较
if (nums[j] > nums[j + 1]) {
//交换
int temp =nums[j];
nums[j] =nums[j + 1];
nums[j + 1] =temp;
//开始计数
changeCount++;
System.out.println(changeCount);
}
}
//开始判断本次有没有数字的交换
if (changeCount == 0) {
break;
}
System.out.print("第" +i + "次循环:");
printArray(nums);
}
}
/**
* 打印数组
* @param nums
*/
private static void printArray(int[]nums) {
for (int i = 0; i < nums.length;i++) {
System.out.print(nums[i] + "\t");
}
System.out.println();
}
private static int[] randomArray(int length) {
//声明一个数组
int[]nums = new int[length];
//开始动态初始化
for (int i = 0; i < nums.length;i++) {
nums[i] = (int) (Math.random() * 10000);
}
//返回数组
return nums;
}
}
class GirlFriend {
private Stringname;
public GirlFriend(Stringname) {
this.name =name;
}
}
运行结果:
3652 17611982 2281 1003 2889 96999100 7407 3748
=======================
1
2
3
4
5
6
7
8
第0次循环:1761 19822281 1003 2889 3652 91007407 3748 9699
1
2
3
第1次循环:1761 19821003 2281 2889 3652 74073748 9100 9699
1
2
第2次循环:1761 10031982 2281 2889 3652 37487407 9100 9699
1
第3次循环:1003 17611982 2281 2889 3652 37487407 9100 9699
1003 17611982 2281 2889 3652 37487407 9100 9699
冒泡排序第一次会将最大的值排在最后。
当changeCount=0时,说明没有发生互换,一直是nums[i]<nums[i+1]。即排序已经完成。
- 冒泡排序(最优)
- 最优冒泡法排序(C语言)
- 冒泡排序的最优算法
- JavaScript冒泡排序(冒泡排序最优版)包括如果原数组已经排好顺序,不需要在比较,直接终止循环!
- 冒泡排序(包括局部冒泡排序)
- 排序(之冒泡排序)
- 10-冒泡排序(排序)
- 排序(3)冒泡排序
- 排序(一) 冒泡排序
- 排序(五):冒泡排序
- 交换排序(冒泡排序)
- 排序问题(冒泡排序)
- 排序(1)冒泡排序
- 排序(一)冒泡排序
- 起泡排序(冒泡排序)
- 排序(1)-冒泡排序
- 数据结构(排序)--冒泡排序
- 排序(1)冒泡排序
- Android实现沉浸式状态栏的那些坑
- C++里,左值和右值的问题
- $PATH 关于执行文件路径的路径
- poj 2421 Constructing Roads
- MySql优化实战,详解存储过程
- 冒泡排序(最优)
- java 程序用exe4j 打包成exe,怎样在没有jdk环境电脑上运行
- Android代码混淆
- 纯汇编语言打印字符.以及输出寄存器值至屏幕
- uboot之board.c
- JavaScript正则表达式——常用正则表达式整理
- 基于js的算术验证
- linux 5 clone to linux 6 libjava.so error
- C++ Handle(句柄) part1