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();
	}
全部评论

相关推荐

11-09 17:30
门头沟学院 Java
TYUT太摆金星:我也是,好几个华为的社招找我了
点赞 评论 收藏
分享
美丽的查理斯不讲武德:包kpi的啊,感觉虾皮一点hc都没有
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务