冒泡排序
来源:互联网 发布:js注册事件 编辑:程序博客网 时间:2024/06/06 06:44
#include "stdafx.h"
#define MAXSIZE 10
typedef struct
{
int r[MAXSIZE+1];
int length;
} SqList;
void swap(SqList *p, int i, int j)
{
int temp = 0;
temp = p->r[i];
p->r[i] = p->r[j];
p->r[j] = temp;
}
//基础冒泡排序
void BubbleSort0(SqList *L)
{
int i,j;
for(i=1;i<L->length;i++)
{
for(j=i+1;j<=L->length;j++)
{
if(L->r[i]>L->r[j])
{
swap(L,i,j); /* 交换L->r[i]与L->r[j]的值 */
}
}
}
}
//正宗冒泡排序
void BubbleSort(SqList *L)
{
int i,j;
for(i=1;i<L->length;i++)
{
for(j=L->length;j>=i;j--)
{
if(L->r[j]<L->r[i])
{
swap(L,i,j); /* 交换L->r[i]与L->r[j]的值 */
}
}
}
}
//优化后的冒泡排序
void BubbleSort1(SqList *L)
{
int i,j;
bool Flag=true;
for(i=1;i<L->length && Flag;i++)
{
Flag=false;
for(j=L->length;j>=i;j--)
{
if(L->r[j]<L->r[i])
{
swap(L,i,j); /* 交换L->r[i]与L->r[j]的值 */
}
Flag=true;
}
}
}
int main(int argc, char* argv[])
{
SqList sq;
sq.r[1]=9;sq.r[2]=1;sq.r[3]=5;sq.r[4]=8;sq.r[5]=3;sq.r[6]=7;sq.r[7]=4;sq.r[8]=6;sq.r[9]=2;
sq.length=9;
SqList *L= &sq;
//基础冒泡排序
BubbleSort0(L);
//正宗冒泡排序
BubbleSort(L);
//优化后的冒泡排序
BubbleSort1(L);
for(int i=0;i<11;i++)
{
printf("%ld/n",sq.r[i]);
}
return 0;
}