首页 > 代码库 > 南阳OJ--语言入门--来自小代码

南阳OJ--语言入门--来自小代码

4.ASCII 码排序 -- 学习插入排序

ASCII码排序
时间限制:3000 ms  |  内存限制:65535 KB
难度:2

描述
    输入三个字符(可以重复)后,按各字符的ASCII码从小到大的顺序输出这三个字符。

输入
    第一行输入一个数N,表示有N组测试数据。后面的N行输入多组数据,每组输入数据都是占一行,有三个字符组成,之间无空格。
输出
    对于每组输入数据,输出一行,字符中间用一个空格分开。
样例输入

    3
    qwe
    asd
    zxc

样例输出

    e q w
    a d s
    c x z

#include<stdio.h>
#include<string.h>


/**
 * @brief 插入排序
 * @param array 要排序的数组
 * @param len 数组的长度
 * @return
 */
int sortinsert( char * elem_array, int len ){
    if( NULL == elem_array || 0 >= len ){
        return -1;
    }

    int i = 1;
    int j = 0;
    for( ; i < len; i++ ){
        if( elem_array[i] < elem_array[i-1]){
                char tmp = elem_array[i];
                for( j = i - 1; j >= 0 && elem_array[j] > tmp; j--){
                   elem_array[j+1] = elem_array[j]; 
                }
                elem_array[j+1] = tmp;
        }
    }

    return 0;
}

int main( void ){

    int N = 0;
    scanf("%d",&N);
    char charr[4];
    
    while(N--){
        scanf("%s",charr);
        sortinsert(charr,3);
        printf("%c %c %c\n",charr[0],charr[1],charr[2]);

    }
        

    return 0;
}


南阳OJ--语言入门--来自小代码