8.3.1冒泡排序

#include "stdafx.h"
#include 
<iostream.h>
#include 
<malloc.h>

int const count=10;

typedef 
struct 
{
    
int key;
}
records;

typedef records list[count
+1];

void BubbleSort(list & r)
{
    
bool flag=1;
    
//最多需要比较n-1次
    for(int i=1;i<count-1;i++)
    
{
        
bool flag=1;
        
//这里是<=count-i,需要减少一个节点,因为在循环里引用了比j大1的索引
        for(int j=1;j<=count-i;j++)
        
{
            
if (r[j].key>r[j+1].key)
            
{
                flag
=0;
                
int tmp=r[j].key;
                r[j].key
=r[j+1].key;
                r[j
+1].key=tmp;
            }

        }

        
if (flag)
        
{
            
return;
        }

    }

}


void printList(list r)
{
    
for(int i=0;i<count;i++)
    
{
        
if (i==0)
        
{
            cout
<<r[i+1].key;
        }

        
else
        
{
            cout
<<","<<r[i+1].key;
        }

    }

    cout
<<endl;
}


int main(int argc, char* argv[])
{
    list r;

    
for(int i=0;i<count;i++)
    
{
        cout
<<"输入第"<<i+1<<"个主键";
        cin
>>r[i+1].key;
    }


    cout
<<"输入的序列为:"<<endl;
    printList(r);
    BubbleSort(r);
    cout
<<"冒泡排序后的序列为:"<<endl;
    printList(r);
    
return 0;
}

    
posted @ 2007-08-07 16:09  吴东雷  阅读(248)  评论(0编辑  收藏  举报