冒泡排序

****************普通冒泡排序法BEGIN********************

void main(){
 int num[]={8,6,7,5,3,4,2,1,0,9},state=1;
 for(int i=0;(i<=9)&&state;i++){
   state=0;
  for(int j=0;j<=9-i;j++)
   if(num[j]>num[j+1]){
    int temp=num[j];
    num[j]=num[j+1];
    num[j+1]=temp;
     state=1;
   }
 }
 for(i=0;i<=9;i++)
  cout<<num[i]<<"   ";
}

****************普通冒泡排序法OVER********************

****************冒泡排序法(链表实现)BEGIN***************

typedef struct Node{
 int v;
 struct Node *next;
}Node;
void Insert(Node *L,int e){
 Node *temp=new Node;
 temp->v=e;
 temp->next=NULL;
 L->next=temp;
}
void main(){
 Node *H=new Node,*L=new Node,*p0=new Node,*p1=new Node;
 L=H;
    Insert(H,8);
 H=H->next;
 Insert(H,6);
 H=H->next;
 Insert(H,7);
 H=H->next;
 Insert(H,5);
 H=H->next;
 Insert(H,3);
 H=H->next;
 Insert(H,4);
 H=H->next;
 Insert(H,2);
 H=H->next;
 Insert(H,1);
 H=H->next;
 Insert(H,0);
 H=H->next;
 Insert(H,9);
 H=L;
 L=L->next;
 /*while(L!=NULL){
  printf("%d  ",L->v);
  L=L->next;
 }//构造整个链表
 //用链表实现出泡法  */
 int state=1,Max=100; //  将MAX的值设为100,利于第一轮循环
 for(p0=H->next;p0!=NULL&&state;p0=p0->next){
  state=0;
  for(p1=H->next;p1->next!=NULL&&p1->v!=Max;p1=p1->next)
   if((p1->v)>(p1->next->v)){
    int a;        
    a=p1->v;
    p1->v=p1->next->v;
    p1->next->v=a;
    state=1;
   }
  Max=0;
  for(p1=H->next;p1->next!=NULL&&p1->v!=Max;p1=p1->next) //此循环求出这一次范围中的最大值赋给MAX
   if(p1->v>Max)
    Max=p1->v;
    }
    while(L!=NULL){
  printf("%d  ",L->v);
  L=L->next;
 }
}

 

****************冒泡排序法(链表实现)OVER***************

 

哈哈,今天又学到了一点点哦,开心ING

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值