冒泡排序

  冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名“冒泡排序”。

/**
 * 冒泡排序(JavaScript版)
 *
 * @param array arr 要排序的数组
 * @return array 排序后的数组
 */
function bubbleSort(arr) {
    var length = arr.length;
    var temp = null;

    for (var i = 0; i < length - 1; i++) {
        for (var j = 0; j < length - 1 - i; j++) {
            if (arr[j] > arr[j + 1]) {
                temp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = temp;
            }
        }
    }

    return arr;
}

var arr = [8, 2, 0, 4, 9, 7, 3, 1, 5, 6];

console.log(bubbleSort(arr)); // 输出结果:(10) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

 

<?php
/**
 * 冒泡排序(PHP版)
 *
 * @param array $arr 要排序的数组
 * @return array 排序后的数组
 */
function bubble_sort(array $arr)
{
    $length = count($arr);

    for ($i = 0; $i < $length - 1; $i++) {
        for ($j = 0; $j < $length - 1 - $i; $j++) {
            if ($arr[$j] > $arr[$j + 1]) {
                list($arr[$j], $arr[$j + 1]) = [$arr[$j + 1], $arr[$j]];
            }
        }
    }

    return $arr;
}

$arr = [8, 2, 0, 4, 9, 7, 3, 1, 5, 6];
echo print_r(bubble_sort($arr), true);

 

package main

import "fmt"

// BubbleSort 冒泡排序(Go版)
func BubbleSort(nums []int) {
   length := len(nums)

   for i := 0; i < length-1; i++ {
      exchanged := false

      for j := 0; j < length-1-i; j++ {
         if nums[j] > nums[j+1] {
            nums[j], nums[j+1] = nums[j+1], nums[j] // 交换
            exchanged = true
         }
      }

      // 一轮内循环之后如果都没有发生交换,说明已排好序,不需要再执行循环操作了
      if !exchanged {
         break
      }
   }
}

func main() {
   nums := []int{8, 2, 0, 4, 9, 7, 3, 1, 5, 6}
   BubbleSort(nums)
   fmt.Println(nums) // [0 1 2 3 4 5 6 7 8 9]
}

Copyright © 2024 码农人生. All Rights Reserved