P1004順位

  この質問は、比較的簡単ですが、おそらく構造の使用、また必要に応じて他のではなく、さらにソートを調査します。トピックを見てみましょう

  

  同様に、需要が出力する人々の最高と最低のスコアは数の名前を学ぶために、非常に明確です。非常に明らかであるそのようなサブ処理プログラム、シーケンスqソート最初のデータ行に、入力、最初と最後のアレイの出力、ビン。しかし、我々は独自のソートアルゴリズムを記述するかSTDLIBでの使用をソートする方法を知っている必要があります。ソートアルゴリズムや他のブログのqsort私はここでそれらを繰り返すない、資料に記載されています。

コードは以下の通りであります:

1の#include <stdio.hの>
 2の#include <STDLIB.H>
 3  の#define MAX_SIZE 12
 4  の#define MAX_STD_SEIZE 150
 5  
6のtypedef 構造体データ
 7  {
 8      チャー名[MAX_SIZE]。
9      INTのID [MAX_SIZE]。
10      int型マーク。
11  } STD。
12  
13  int型 CMP(CONST  ボイド *、CONST  ボイド *のB)。
14  
15  のint main()の
 16  {
 17     int型 N、I = 0 18      INT Min_Mark = 100、Max_Mark = 0 19      int型Min_Pos、MAX_POS。
20      のscanf(" %d個"、&N)
21      STD学生[MAX_STD_SEIZE]。
22  
23      のためにint型 i = 0 ; iがn <I ++は24      {
 25          のscanf(" %S%S%D "、学生[I] .nameの、学生[I] .ID、&学生[I] .Mark );
26          GETCHAR()。
27     }
 28      のqsort(学生、N、はsizeof(スチューデント[ 0 ])、CMP)。
29      のprintf(" %S%S \ n "、学生[ 0 ] .nameの、学生[ 0 ] .ID)。
30      のprintf(" %S%S \ n "、学生[N- 1 ] .nameの、学生[N- 1 ] .ID)。
31  
32      戻り 0 ;
33  }
 34  
35  int型 CMP(CONST  ボイド *、CONST  ボイド *のB)
 36  {
37      リターン(*(STD *)A).Mark>(*(STD *)b)の.Mark?- 11 ;
38 }
内蔵高速行

 

  実際には、この質問をソートする必要はありません、我々は4つの変数の最大値を定義することができ、入力値、最小値、最大値、インデックス、インデックスの最小値の時に記憶されています。最高得点の最低スコアの選挙に仕上がっ入力し、時間の複雑さは、O(n)はO(nlogn)の高速ロウよりも簡単です。

  コードは以下の通りです

1の#include <stdio.hの>
 2の#include <STDLIB.H>
 3  の#define MAX_SIZE 12
 4  の#define MAX_STD_SEIZE 150
 5  
6のtypedef 構造体
7  {
 8      チャー名[MAX_SIZE]。
9      INTのID [MAX_SIZE]。
10      int型マーク。
11  } STD。
12  
13  のint main()の
 14  {
 15      int型 N、I = 0 16      INT Min_Mark = 100、Max_Mark = 0 17     int型Min_Pos、MAX_POS。
18      のscanf(" %d個"、&N)
19      STD学生[MAX_STD_SEIZE]。
20  
21      ながら(N-- 22      {
 23  
24          のscanf(" %S%S%D "、学生[I] .nameの、学生[I] .ID、&学生[I] .Mark)。
25          であれば(Min_Mark> スチューデント[I] .Mark)
 26          {
 27              Min_Pos = I。
28              Min_Mark = [I] .Mark学生。
29          }
 30         もし(Max_Mark < スチューデント[I] .Mark)
 31          {
 32              MAX_POS = I。
33              Max_Mark = [I] .Mark学生。
34          }
 35          iが++します36          GETCHAR()。
37      }
 38  
39      のprintf(" %S%S \ n " 、学生[MAX_POS] .nameの、学生[MAX_POS] .ID)。
40      のprintf(" %S%S \ n " 、学生[Min_Pos] .nameの、学生[Min_Pos] .ID)。
41  
42      戻り 0 ;
43 }
コードの表示

さて、再び 

     - 前方とより困難、紳士は、お互いを励まします!

おすすめ

転載: www.cnblogs.com/daker-code/p/11618622.html