冒泡排序算法的运作如下:
比较相邻的元素。如果第一个比第二个大,就交换他们两个。
对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。
针对所有的元素重复以上的步骤,除了最后一个。
持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
实现目的:一组元素 [30, 20, 2, 1, 45, 45, 78, 100, 230],只需对 100 前面的数值进行比较,100后面将退出
PHP 实现:
function bubbleSort($array)
{
$arrayCount = count($array);
if($arrayCount < 2){
return $array;
}
for($i=1; $i<$arrayCount; $i++){
$isBreak = true;
for($j=0; $j < $arrayCount - $i; $j++){
if($array[$j] > $array[$j + 1]){
$temp = $array[$j];
$array[$j] = $array[$j + 1];
$array[$j + 1] = $temp;
$isBreak = false;
}
}
if($isBreak){
break;
}
}
return $array;
}
$arr = bubbleSort([30, 20, 2, 1, 45, 45, 78, 100, 230]);
var_export($arr);
Python 实现:
def bubbleSort(args):
count = len(args)
if count < 2:
return args
for i in range(count):
isBreak = True
for j in range(count - i - 1):
if args[j] > args[j + 1]:
temp = args[j]
args[j] = args[j + 1]
args[j + 1] = temp
isBreak = False
if isBreak:
print(i)
break
return args
f = bubbleSort([30, 20, 2, 1, 45, 45, 78, 100, 230])
print(f)
Go 实现:
package main
import "fmt"
func main(){
var arr = []int{30, 20, 2, 1, 45, 45, 78, 100, 230}
f := bubbleSort(arr)
fmt.Println(&f)
}
func bubbleSort(arr []int) []int{
var isBreak = false
count := len(arr)
if count < 2{
return arr
}
for i := 1; i < count; i++{
isBreak = true
for j := 0; j < count - i; j++ {
if arr[j] > arr[j + 1]{
temp := arr[j]
arr[j] = arr[j + 1]
arr[j + 1] = temp
isBreak = false
}
}
if isBreak{
break
}
}
return arr
}
Swift 实现
var array = [30, 20, 2, 1, 45, 45, 78, 100, 230]
var count = array.count
var isBreak = false
for i in 0..<count {
isBreak = true
for j in 1..<count - i {
if array[j] < array[j - 1]{
let temp = array[j - 1]
array[j - 1] = array[j]
array[j] = temp
isBreak = false
}
}
if isBreak {
break
}
}
print(array)
Javascript 实现
var array = [30, 20, 2, 1, 45, 45, 78, 100, 230];
var arrayCount = array.length;
var isBreak;
for(var i = 0; i < arrayCount; i++){
isBreak = true;
for(var j = 0; j < arrayCount - i - 1; j++){
if(array[j] > array[j + 1]){
let temp = array[j];
array[j] = array[j + 1];
array[j + 1] = temp;
isBreak = false;
}
}
if(isBreak){
break;
}
}
console.log(array)
网友评论