JS基础 Java 冒泡排序
冒泡排序升序排列
var arr = [9, 2, 3, 15, 5];
console.log("排序前" + arr);
function sort() {
for (var i = 0; i < arr.length - 1; i++) {
for (var j = 0; j < arr.length - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
var temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
console.log("排序后" + arr);
}
sort();
更新
冒泡降序排列,如果第一次循环数组有序,直接跳出循环,时间复杂度O(N)
var s = [32,78,12,88,45,91,75];
// var s = [8, 6, 5, 4, 3, 1];
function bubbleFun(arr) {
var flag = 0;
for (var i = 0; i < arr.length - 1; i++) {
// 剔除算法,每循环一遍少比较一次,O(N*N)
for (var j = 0; j < arr.length - i - 1; j++) {
if (arr[j] < arr[j + 1]) {
var temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
flag = 1;
}
}
// 冒泡最优情况,数组降序排列,时间复杂度O(N)
if (flag === 0)
break;
}
return arr;
}
console.log(bubbleFun(s));
学Java时也写了冒泡排序,实现方法一样。
package homework;
/** * @author Yangsongle * @date 2020-8-12 * @time 16:56:32 * @describe 0812作业 */
public class homework {
public static void main(String[] args) {
// 对数组从小到大进行排序,然后输出排序后结果。
int[] arr = {
88, 32, -23, 18, 12, 90, 2 };
sortFun(arr);
}
// 针对以上数组从小到大进行排序,然后输出排序后结果。
public static void sortFun(int array[]) {
int flag = 0;
for (int i = 0; i < array.length - 1; i++) {
// 剔除算法,每循环一遍少比较一次,O(N*N)
for (int j = 0; j < array.length - i - 1; j++) {
if (array[j] > array[j + 1]) {
// 异或交换两个数,不需要引入第三个变量
array[j] = array[j + 1] ^ array[j];
array[j + 1] = array[j + 1] ^ array[j];
array[j] = array[j + 1] ^ array[j];
flag = 1;
}
// 冒泡最优情况,数组降序排列,时间复杂度O(N)
if (flag == 0)
break;
}
}
// 遍历输出
System.out.print("排序后结果为:");
for (int k = 0; k < array.length; k++) {
System.out.print(array[k] + " ");
}
System.out.println();
}