冒泡排序的基本思想:从后往前两两比较相邻元素,若为逆序,则交换位置,直到序列比较完为一趟冒泡排序,这时排出来了最小的元素,继续做冒泡,直到全部有序。
时间复杂度:O(n²)
稳定性:稳定
下面投放冒泡排序代码
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
#define MaxSize 50
typedef struct{
int data[MaxSize];
int length;
}SeqList;
//创建顺序表
void createTable(SeqList &L){
L.length=5; //用循环方法初始化时,千万要记得给length赋初值
L.data[0] = 3;
L.data[1] = 1;
L.data[2] = 4;
L.data[3] = 2;
L.data[4] = 5;
}
//冒泡排序
void BubbleSort(SeqList &L,int n){
//用冒泡排序法将序列L中的元素按从小到大排列
int i,j,temp;
for(i = 0;i<n-1;i++){
for(j=n-1;j>i;j--){ //一趟冒泡排序
if(L.data[j-1] > L.data[j]){ //若为逆序
temp = L.data[j]; //交换
L.data[j] = L.data[j-1];
L.data[j-1] = temp;
}
}
}
}
//输出顺序表
void printTable(SeqList L){
int i;
for(i = 0;i<L.length;i++){
printf("%d\t",L.data[i]);
}
printf("\n");
}
int main(){
SeqList L; //创建表
createTable(L);
printf("排序前的列表为:\n");
printTable(L); //打印表
BubbleSort(L,5); //冒泡排序算法
printf("排序后的列表为:\n");
printTable(L); //打印排序后的
return 0;
}