一个任意数字序列,要求从小到大排序,并要求找出最大值和最小值所在原序列的原始位置。
尽可能少开数组。代码测试无误的。
分数全部只给最先给出正确答复的。

解决方案 »

  1.   

    // paixu.cpp : Defines the entry point for the console application.
    //#include "stdafx.h"
    #include "stdlib.h"
    #include "time.h"int find_min_index( int *num, int len )
    {
    int i;
    int cur = 0x7fffffff;
    int index = 0;
    for( i = 0; i < len; i++ )
    {
    if( num[ i ] < cur )
    {
    index = i;
    cur = num[ i ];
    }
    } return index;
    }int find_max_index( int *num, int len )
    {
    int i;
    int cur = 0x80000000;
    int index = 0;
    for( i = 0; i < len; i++ )
    {
    if( num[ i ] > cur )
    {
    index = i;
    cur = num[ i ];
    }
    } return index;
    }void _sort( int *num, int len )
    {
    int i,j,flag,temp;
    for(i = 0; i < len-1; i++)
    {
    flag = 1;
    for(j = 0; j < len-i-1; j++)
    {
    if(num[j] > num[j+1])
    {
    temp = num[j];
    num[j] = num[j+1];
    num[j+1] = temp;
    flag = 0;
    }
    }
    }
    }int main(int argc, char* argv[])
    {
    int array[ 0x20 ]; srand( ( unsigned long )time( ( time_t * )NULL ) ); int i;
    for( i = 0; i < 0x20; i++ )
    {
    array[ i ] = rand();
    } printf( "array before sort is " );
    for( i = 0; i < 0x20; i++ )
    {
    printf( "%d ", array[ i ] );
    } int min_index, max_index; min_index = find_min_index( array, 0x20 );
    max_index = find_max_index( array, 0x20 ); printf( "\r\nmin is %dth max is %dth \r\n", min_index + 1, max_index + 1 ); _sort( array, 0x20 ); printf( "\r\narray after sort is " );
    for( i = 0; i < 0x20; i++ )
    {
    printf( "%d ", array[ i ] );
    }
    return 0;
    }