冒泡排序(画图分析)

28 篇文章 2 订阅
24 篇文章 1 订阅

1、定义:算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名“冒泡排序”。
2.步骤**:**
(1)、从头开始,按照大的排在后面的次序(也可小的排在后面)进行两两交换,假定经过一轮两两交换后,最后一个数字为最大的;
(2)、第二次,除最后一个不参与比较之外,其余数字按第一步骤依次进行。
(3)、重复上述步骤,每次需比较的数字个数依次递减。直到所有的都比较完。

3、例如:3 7 4 2 6 1在这里插入图片描述

C语言代码

#include<stdio.h>
void bubble(int arr[],int n)    //使用数组 
{ int i;
int temp;
for(i=0;i<n-1;i++){
	if(arr[i]<arr[i+1]){
		temp=arr[i];
		arr[i]=arr[i+1];
		arr[i+1]=temp;     //交换 
	}
} 
}
void bubleSort(int arr[],int n){
	int i;
	for(i=n;i>=1;i--){
		bubble(arr,i);
	}
} 
int main(){
	int arr[]={6,5,1,2,3,9,8,4,7};
	int i;
    bubble(arr,9);
	for(i=0;i<=9;i++){
		printf("%d\n",arr[i]);
	}
	return 0;
}

C++代码

#include<iostream>
using namespace std;
void bubbleSort(int arr[],int n){
	int i,j;
	for(i=0;i<n;i++)    //外循环为比较趟数比较n次
	   for(j=0;j<n-1;j++){    //内循环每趟需要比较的次数,比较n-1次
	   	if(arr[j]>arr[j+1])
	   	swap(arr[j],arr[j+1]);
	   }
}
int main(){
	int arr[10]={4,5,7,1,8,2,9,0,3,6};
	cout<<"排序前的数组:"<<endl;
	for(int i=0;i<10;i++)
	cout<<arr[i]<<"   ";
	cout<<endl;
	bubbleSort(arr,10);
	cout<<"排序后的数组:"<<endl;
	for(int i=0;i<10;i++)
	cout<<arr[i]<<"    ";
	cout<<endl;
}

在这里插入图片描述
JAVA实验

package maopao;

import java.lang.reflect.Array;

public class Solution {
	public static void main(String[] args) {
	int arr[] = new int[] {1,3,5,7,8,6,4,2};
	int i,j;
	for(i =0;i<arr.length-1;i++) { 
         for(j=0;j<arr.length-1-i;j++) {
             if(arr[j]>arr[j+1]) {
                 int temp = arr[j];
                 arr[j]=arr[j+1];
                 arr[j+1]=temp;
         }
        System.out.println("从小到大排序后:");
        for(i=0;i<arr.length;i++);
        System.out.println(arr[i]+" ");
         }    
     }
}
}

4、冒泡排序的时间复杂度:O(n^2)
5、空间复杂度:O(1)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值