python php 冒泡排序

#!/usr/bin/python
#coding=UTF-8

def bubble_sort(li): #循环列表每次拿出一个值,和列表中所有的值进行比较之后然后切换位置
	for i in range(len(li)-1): #躺数循环 最后一个数不用比较 已经是最大或者最小的数 所以躺数减少1
		exchange = False  #增加标识 以减少循环次数 
		for j in range(len(li)-i-1): # len(li)-i 表示列表中剩下的无序的列表。每比较一次 则剩下的列表长度减少i。无序列表躺数
			if li[j] > li[j+1]: #第一个数和第二个进行比较 如果第一个数大于第二个数就进行交换(升序)
				# if li[j] < li[j+1]: 第一个数小于第二个数就进行交换(降序)
				li[j],li[j+1] = li[j+1],li[j]
				exchange = True # 如果发生交换,那么证明列表中还是有需要进行比较 即无序状态
				#print li
		if not exchange:  #如果没有发生改变,那么已经排序完毕,结束循环(对于不是非常混乱的列表,可以减少循环次数,节省时间,结束算法即可)
				return	li

#冒泡排序 在为改进之前的时间复杂度是 O(n^2) 在改进之后【exchange = False  #增加标识 以减少循环次数】最优情况为O(n) 
li = [1,0,3,4,2,9,7,8,5]
print li
if __name__ == "__main__":
	print bubble_sort(li)

_________
//冒泡排序 php
function bubble_sort($li)
{
	$li_lenght = count($li)-1;
	for ($i=0; $i < $li_lenght; $i++) { 
		$exchange = False ;
		for ($j=0; $j < $li_lenght - $i; $j++) { 
			if ($li[$j] > $li[$j+1]) {
				$temp = $li[$j];
				$li[$j] = $li[$j+1];
				$li[$j+1] = $temp;
				$exchange = True;
			}
		}
		if (!$exchange) {
			return $li;
		}
	}	
}
$li = [1,0,3,4,2,9,7,8,5];
//$li = [1,2,3,4,5,6,7,8,9];

//echo search($li,10);
//echo binary_search($li,9);
var_dump( bubble_sort($li));
posted @ 2019-09-26 11:22  青柚  阅读(121)  评论(0编辑  收藏  举报