python冒泡排序算法详解_python算法与数据结构之冒泡排序
实例详解
⼀、冒泡排序介绍
python下载途径有哪些冒泡排序(英语:Bubble Sort)是⼀种简单的排序算法。它重复地遍历要排序的数列,⼀次⽐较两个元素,如果他们的顺序错误就把他们交换过来。遍历数列的⼯作是重复地进⾏直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越⼩的元素会经由交换慢慢“浮”到数列的顶端。
⼆、冒泡排序原理
⽐较相邻的元素。如果第⼀个⽐第⼆个⼤,就交换他们两个。
对每⼀对相邻元素做同样的⼯作,从开始第⼀对到结尾的最后⼀对。这⼀步做完,最后的元素应该会是最⼤的数。
针对所有的元素重复以上的步骤,除了最后⼀个。
持续每次对越来越少的元素重复上⾯的步骤,直到没有任何⼀对数字需要⽐较。
三、冒泡排序图解
关于truncate table
四、冒泡排序总结
有N个数据需要⽐较N-1趟
每趟⽐较N-i次,i表⽰第⼏趟,例如7个数据,第四趟需要⽐较 7-4 = 3次五、冒泡排序python代码实现
def bubble_sort(numlist):
# 需要排列的数据个数
N = len(numlist)
# i 控制⼀共需要多少趟 N-1
for i in range(N-1):
# j 控制每趟需要⽐较多少次(因为i是从0开始,所以N-i-1) for j in range(N-i-1):
冒泡排序代码c语言# 判断j和j+1两个位置的数据⼤⼩
if numlist[j]>numlist[j+1]:
# 交换(交换的代码有很多种写法)
temp = numlist[j]
numlist[j] = numlist[j+1]
numlist[j+1] = temp
list = [19,2,13,8,34,25,7]
print("排序前list = %s"%list)
bubble_sort(list)
print("排序后list = %s"%list)
fontcreator修改字体间距运⾏结果为:
排序前list = [19, 2, 13, 8, 34, 25, 7]
排序后list = [2, 7, 8, 13, 19, 25, 34]
六、冒泡排序C语⾔代码实现
#include
// 创建⼀个冒泡函数,需要传递⼀个数组,和数组的长度void bubble_sort(int array[],int arrayLength)
{
// i 控制⼀共需要循环多少趟,
for (int i=0; i
{
// j 控制每趟循环多少次
for (int j=0; j
{
//判断j和j+1位置上数的⼤⼩
if (array[j]>array[j+1])
{
//交换
int temp = array[j];
array[j] = array[j+1];
array[j+1] = temp;
}
}
}
}
int main(int argc, const char * argv[])
{
// 函数的声明
void bubble_sort(int array[],int arrayLength);
// 创建⼀个数组
int numArray[] = {19,2,13,8,34,25,7};
//进⾏排序
bubble_sort(numArray,7);
printf("打印排序后的数组是:\n");
for (int i=0; i<7; i++)
{
printf("%d ",numArray[i]);
}
return 0;
}
运算结果为:
打印排序后的数组是:
2 7 8 1
3 19 25 34
七、冒泡排序的优化
通过上⾯的案例我们已经知道冒泡排序的原理和实现过程,但是在处理⼀些特殊数据上的时候,我们还可以对冒泡排序优化,例如:⼀个数组本来就是有序,1,2,3,4,5,6,7,这样的⼀个数组已经是正确的顺序的,我们只需要⽐较⼀趟后,发现这⼀趟所有的数据都没有发⽣改变,就说明这已经是⼀个正确的顺序的,后⾯的循环就没必要循环下去了,这样便能提⾼程序的效率,⽽我们只需要在冒泡排序的代码中,判断是否这⼀样都没发⽣交换即可。
python代码实现如下:
def bubble_sort(numlist):
# 需要排列的数据个数
N = len(numlist)
# i 控制⼀共需要多少趟 N-1
for i in range(N-1):
# 定义⼀个变量,⽤于记录是否在本趟中发⽣了交换
isChange = 0
# j 控制每趟需要⽐较多少次(因为i是从0开始,所以N-i-1) for j in range(N-i-1):
align html# 判断j和j+1两个位置的数据⼤⼩
if numlist[j]>numlist[j+1]:
# 交换(交换的代码有很多种写法)
temp = numlist[j]
numlist[j] = numlist[j+1]
numlist[j+1] = temp
# 只要发⽣了交换,我们就改变isChange的值为1
isChange = 1
web前端框架图解# 只要isChange =0说明已经是正确顺序了,直接break即可if isChange == 0:
break
list = [19,2,13,8,34,25,7]
print("排序前list = %s"%list)
bubble_sort(list)
print("排序后list = %s"%list)
运⾏结果为:
排序前list = [19, 2, 13, 8, 34, 25, 7]
排序后list = [2, 7, 8, 13, 19, 25, 34]
C语⾔代码实现如下:
#include
// 创建⼀个冒泡函数,需要传递⼀个数组,和数组的长度
void bubble_sort(int array[],int arrayLength)
{
// i 控制⼀共需要循环多少趟,
for (int i=0; i
{
//定义⼀个变量,⽤于记录是否在本趟中发⽣了改变
int isChange = 0;
// j 控制每趟循环多少次
for (int j=0; j
{
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论