#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <time.h>
typedef struct list{
int *p;
int len;
}S;
void Initialize(int *&p,int &len){
p = (int *)malloc(sizeof (int)*len);
len=10;
int i;
srand(time(NULL));
for(i=0;i<len;i++){
p[i] = rand() % 100;
}
}
void SPrint(int *p,int len){
int j;
for(j=0;j<len;j++){
printf("%d ",p[j]);
}
}
void swap(int &a, int &b){
int temp;
temp = a;
a = b;
b = temp;
}
void BubbleSort(int *&p,int len){
int i,j;
bool flag;//设置哨兵。作用:如果数组本身有序,即进行完一次排序后并没有发生交换,则直接返回。此时的时间复杂度为O(n)
for(i = 0;i<len-1;i++){//时间复杂度最坏为O(n^2),两层循环都全部遍历完。平均复杂度:(1+2+……+n-1)*n/2,也是O(n^2)的数量级
flag = false;
for(j = len-1;j>i;j--){
if(p[j]<p[j-1]){
swap(p[j],p[j-1]);
flag = true;
}
}
if(flag==false){
return;
}
}
}
int main(){
S array;
Initialize(array.p,array.len);
SPrint(array.p,array.len);
BubbleSort(array.p,array.len);
printf("\n");
SPrint(array.p,array.len);
return 0;
}