冒泡排序

#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;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值