1.如果有 N 个数字,称从左到右找最大为一趟,那么要排好序需要多少趟?
答:需要N-1次,因为如果因为N-1个数都排好了,那么最后一个数也就不用排了
2.那这个算法的时间复杂度为多少?
每排完一趟之后,就少排1个数字,所以为:

根据复杂度的规则,去掉低阶项(也就是n/2),并去掉常数系数,那复杂度就是O(n^2)
3.冒泡算法稳定吗(稳定性怎么样)?
所谓稳定性,其实就是说,当你原来待排的元素中间有相同的元素,在没有排序之前它们之间有先后顺序,在排完后它们之间的先后顺序不变,我们就称这个算法是稳定的(即本身待排元素中有大小一样的元素,现在怎么摆放的,那他排序完之后还是怎么摆放的)
#include<iostream>
using namespace std;
int temp=0;
int n;
int BubbleSort(int arr[])
{
for(int i=0;i<n-1;i++)//控制趟数
{
for(int j=0;j<=n-1-i;j++)//控制比较次数,第i+1趟时需要比较多少次。
{
if(arr[j]>arr[j+1])
{
temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
for(int i=0;i<n;i++)
{
cout<<arr[i]<<" ";
}
}
int main(){
cout<<"请输入你要排序的个数"<<endl;
cin>>n;
int arr[n];
cout<<"请输入你要排序的内容:"<<endl;
for(int i=0;i<n;i++){
cin>>arr[i];
}
BubbleSort(arr);
return 0;
}
#法1:
def BubbleSort(arr):
n = len(arr)
# 遍历所有数组元素
for i in range(n):
# Last i elements are already in place
for j in range(0, n-i-1):
if arr[j] > arr[j+1] :
arr[j], arr[j+1] = arr[j+1], arr[j]
def main():
ar=input("请输入排序内容:")
ar=ar.split()
arr=list(map(int,ar))
BubbleSort(arr)
print ("排序后的数组:")
for i in range(len(arr)):
print ("%d" %arr[i],end=‘ ‘),
main()
#法2:使用sort或sorted()
ar=input("请输入排序内容:")
ar=ar.split()
arr=list(map(int,ar))
#print(sorted(arr))
arr.sort()
print(arr)
原文:https://www.cnblogs.com/zhaoxiansheng666/p/12828143.html