java冒泡排序(Bubble Sort)是一种计较机科学范畴的较简单的排序算法 。
根基概念:
依次比力相邻的两个数 , 将小数放在前面 , 大数放在后面 。 即在第一趟:起首比力第1个和第2个数 , 将小数放前 , 大数放后 。 然后比力第2个数和第3个数 , 将小数放前 , 大数放后 , 如斯继续 , 直至比力最后两个数 , 将小数放前 , 大数放后 。 至此第一趟竣事 , 将最大的数放到了最后 。 在第二趟:仍从第一对数起头比力(因为可能因为第2个数和第3个数的互换 , 使得第1个数不再小于第2个数) , 将小数放前 , 大数放后 , 一向比力到倒数第二个数(倒数第一的位置上已经是最大的) , 第二趟竣事 , 在倒数第二的位置上获得一个新的最大数(其其实整个数列中是第二大的数) 。 如斯下去 , 反复以上过程 , 直至最终完当作排序 。
文章插图
需要这些哦
电脑
myeclipse
第一步:数据对象的冒泡排序 。 1用二重轮回实现 , 外轮回变量设为i , 内轮回变量设为j 。 假若有n个数需要进行排序 , 则外轮回反复n-1次 , 内轮回依次反复n-1 , n-2 , ... , 1次 。 每次进行比力的两个元素都是与内轮回j有关的 , 它们可以别离用a[j]和a[j+1]标识 , i的值依次为1,2,...,n-1 , 对于每一个i , j的值依次为0,1,2,...n-i 。
代码如下所示:
import java.util.Arrays;
public class Test {
public static void arraySort(int[] arr) {
int temp;// 界说一个姑且变量
for (int i = 0; i < arr.length - 1; i++) {// 冒泡趟数
for (int j = 0; j < arr.length - i - 1; j++) {
if (arr[j + 1] < arr[j]) {
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
public static void main(String[] args) {
int arr[] = new int[] { 9, 6, 3, 2, 3, 4 };
arraySort(arr);
System.out.println(Arrays.toString(arr));
}
}
文章插图
2机能阐发(执行效率阐发):
若记实序列的初始状况为"正序" , 则冒泡排序过程只需进行一趟排序 , 在排序过程中只需进行n-1次比力 , 且不移动记实;反之 , 若记实序列的初始状况为"逆序" , 则需进行n(n-1)/2次比力和记实移动 。 是以冒泡排序总的时候复杂度为O(n*n) 。
3机能优化冒泡排序
1、举个例子:int[] array = {2,4,9,7,6,5};
第一轮2和4进行比力 , 2<4 , 位置不变 。 再4和9进行比力 , 4<9 , 位置不变 。 再9和7进行比力 , 9>7 , 9和7的位置交换 。 再9和6进行比力 , 9>6 , 9和6的位置交换 。 再9和5进行比力 , 9>5 , 位置交换 。 第一轮比力的成果就是2 4 7 6 5 9 。
第二轮2和4进行比力 , 2<4 , 位置不变 。 再4和7进行比力 , 4<7 , 位置不变 。 再7和5进行比力 , 7>6 , 7和6的位置交换 。 再7和5进行比力 , 7>5 , 7和5的位置交换 。 第二轮的成果就是2 4 6 5 7 9 。
第三轮2和4进行比力 , 2<4 , 位置不变 。 再4和6进行比力 , 4<6 , 位置不变 。 再6和5进行比力 , 6>5 , 6和5的位置交换 。 第三轮的成果是2 4 5 6 7 9(已经是我们想要的成果了) 。
2、具体代码如下所示:
推荐阅读
- 虹之玉锦的养殖方法,掉叶子怎么办
- 怎么学会编曲?薛之谦和赵雷都不是音乐学院毕业,他们怎么学的乐理知识?
- 房屋装修全攻略之:厨卫吊顶
- 建议收藏 创业必备的基础之四:企业如人生,终局必知法律知识
- 100个法律常识|转需收藏
- 赤子之心下一句是什么赤子之心的意思是什么
- 英雄联盟 云顶之弈怎么查看别人战绩
- 崩坏三如何抽取理之律者
- 家庭斗争之风水解密
- 打完耳洞之后如何避免发炎?如果发炎怎么办?