// 数据结构_冒泡排序.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
/*
算法导论的伪代码
BUBBLESORT(A)
1 for i <- 1 to length[A]
2 do for j <- length[A] downto i+1
3 do if A[j] < A[j-1]
4 then exchange A[j] <-> A[j-1]
*/
/* 时间复杂度为 O(n*n)*/
#define arrary_length 100
int maopao_paixu(int a[],int array_length){
int i = 0,j = 0;
int itemp = 0;
/*冒泡排序,第一轮排序,我们找到最大的元素,放在数组的最后面
在最坏的情况下,我们第一轮找到最大的元素,需要进行N次比较
第二轮为N-1次,以此类推,最坏情况下,要进行N*N次比较
*/
for(i = 0; i < arrary_length;i++){
for(j = arrary_length-1; j > i; j--){
if(a[j] < a[j-1]){
itemp = a[j];
a[j] = a[j-1];
a[j-1] = itemp;
}
}
}
return 0;
}
int _tmain(int argc, _TCHAR* argv[])
{
int a[arrary_length];
int i = 0,j = 0;
/*随机数的生成*/
printf("maopao paixu before:\n");
for(i = 0; i < arrary_length; i++){
a[i] = (i+1)*rand() / 2*i+1;
printf(" %d",a[i]);
}
printf("\n");
/*冒泡排序*/
maopao_paixu(a,arrary_length);
printf("maopao paixu after:\n");
for(i = 0; i < arrary_length; i++){
printf(" %d",a[i]);
}
return 0;
}