现在的位置: 首页 > 综合 > 正文

冒泡排序

2013年07月30日 ⁄ 综合 ⁄ 共 1042字 ⁄ 字号 评论关闭

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

抱歉!评论已关闭.