8.4.1直接选择排序

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

int const count=8;

typedef 
struct 
{
    
int key;
}
records;

typedef records list[count
+1];

void select(list & r)
{
    
for(int i=1;i<count;i++)
    
{
        
int k=i;
        
for(int j=i+1;j<=count;j++)
        
{
            
if (r[j].key<r[k].key)
            
{
                k
=j;
            }

        }

        
if (k!=i)
        
{
            
int key=r[k].key;
            r[k].key
=r[i].key;
            r[i].key
=key;
        }

    }

}


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;
    }
    
*/

    r[
1].key=70;
    r[
2].key=73;
    r[
3].key=69;
    r[
4].key=23;
    r[
5].key=93;
    r[
6].key=18;
    r[
7].key=11;
    r[
8].key=68;
    cout
<<"输入的序列为:"<<endl;
    printList(r);
    
    select(r);

    cout
<<"快速排序后的序列为:"<<endl;
    printList(r);
    
return 0;
}

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