C语言直接选择排序

来源:互联网 发布:网络打鱼赌钱游戏微信 编辑:程序博客网 时间:2024/05/18 17:57


//

//  main.c

//  0518test

//

//  Created by czc on 2017/5/18.

//  Copyright © 2017 czc. All rights reserved.

//


#include <stdio.h>

#define maxsize 100

typedef int datatype;

typedef struct {

    datatype key;

}recodetype;

typedef struct {

    recodetype r[maxsize+1];

    int length;

}table;


//输入

void input(table *tab){

    int i=1;

    while (1) {

        scanf("%d",&tab->r[i].key);

        i++;

        if (getchar()=='\n') {

            break;

        }

    }

    tab->length = i-1;

}


//输出

void output(table tab){

    int i;

    for (i=1; i<=tab.length; i++) {

        printf("%d",tab.r[i].key);

    }

    printf("\n");

}


//直接选择排序

void zjxsort(table *tab){

    int i,j,k;

    //从第一个元素开始遍历

    for (i=1; i<=tab->length; i++) {

        k = i;//记录当前最小元素位置

        //向右边去查找最小的元素

        for (j=i+1; j<=tab->length; j++) {

            if (tab->r[j].key <tab->r[k].key) {

                k = j;//k始终记录最小值

            }

        }

        //最小值不是第一个元素,交换

        if(k!=i){

            tab->r[0] = tab->r[i];

            tab->r[i] = tab->r[k];

            tab->r[k] = tab->r[0];

        }

    }

}





int main(int argc,const char * argv[]) {

    // insert code here...

    table tab;

    input(&tab);//输入

    output(tab);//输出

    zjxsort(&tab);//排序

    output(tab);//输出

    

    

    return0;

}



原创粉丝点击