文末有各大排序算法cpp、python、java、php、javascirpt的实现代码下载链接
一、冒泡排序
冒泡排序:它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。
1、示例
例如:[4,3,5,1]
第一步:4和3比较,4(位置1)比较大交换位置,得 [3,4,5,1];
第二步:4和5比较,5(位置2)比较大不变,得[3,4,5,1];
第三步:5和1比较,5(位置1)比较大交换位置,得[3,4,1,5]
5是第一轮冒泡,重复上面步骤
2、算法描述
- 比较相邻的元素。如果第一个比第二个大,就交换它们两个;
- 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对,这样在最后的元素应该会是最大的数;
- 针对所有的元素重复以上的步骤,除了最后一个;
- 重复步骤1~3,直到排序完成。
3、动图演示
4、代码
冒泡算法-cpp代码
#include <stdio.h>
#include <stdlib.h>
void bubbleSort(int* arr, int length)
{
if (arr == NULL||length==0)
{
return;
}
for (int i = 0; i < length; i++)
{
for (int j = 0; j < length-1-i; j++)
{
if (arr[j + 1] < arr[j])
{
int temp = arr[j + 1];
arr[j + 1] = arr[j];
arr[j] = temp;
}
}
}
}
int main(){
int a[15] = {2,3,4,5,15,19,16,27,36,38,44,46,47,48,50};
bubbleSort(a,15);
}
冒泡算法-java代码
/**
* 冒泡排序
*
* @param array 需要排序的int数组
* @return 排序后的数组
*/
public static int[] bubbleSort(int[] array) {
for (int i = 0; i < array.length; i++) {
for (int j = i + 1; j < array.length; j++) {
if (array[j] < array[i]) {
int tmp = array[j];
array[j] = array[i];
array[i] = tmp;
}
}
}
return array;
}
冒泡算法-python代码
# 时间复杂度:最好:O(n) 平均:O(n²) 最差:O(n²)
# 空间复杂度:O(1)
# 稳定性:稳定
def bubble_sort(nums):
# 遍历len(nums)-1趟
for i in range(len(nums)):
is_sorted = True
# 已经排序好的部分不用排序
for j in range(len(nums) - i - 1):
if nums[j] > nums[j + 1]:
nums[j], nums[j + 1] = nums[j + 1], nums[j]
is_sorted = False
if is_sorted:
break
return nums
res = bubble_sort([5,6,3,43,3,4])
print(res)
冒泡算法-php代码
function bubbleSort($arr)
{
$len = count($arr);
for ($i = 0; $i < $len - 1; $i++) {
for ($j = 0; $j < $len - 1 - $i; $j++) {
if ($arr[$j] > $arr[$j+1]) {
$tmp = $arr[$j];
$arr[$j] = $arr[$j+1];
$arr[$j+1] = $tmp;
}
}
}
return $arr;
}
冒泡算法-javascirpt代码
function bubbleSort(arr) {
var len = arr.length;
for (var i = 0; i < len; i++) {
for (var j = 0; j < len - 1 - i; j++) {
if (arr[j] > arr[j+1]) {
var temp = arr[j+1];
arr[j+1] = arr[j];
arr[j] = temp;
}
}
}
return arr;
}
console.log(bubbleSort([3,4,5,1]))
5、时间复杂度
- 最佳情况:T(n) = O(n)
- 最差情况:T(n) = O(n2)
- 平均情况:T(n) = O(n2)
6、代码下载
冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序、堆排序、计数排序、桶排序、基数排序cpp、java、python、php、javascirpt代码的实现
链接:https://pan.baidu.com/s/1xyBVqeV9fI1j_39LZgCMXA
提取码:om77
复制这段内容后打开百度网盘手机App,操作更方便哦