【題目描述】
病人登記看病,編寫乙個程式,將登記的病人按照以下原則排出看病的先後順序:
1.老年人(年齡 >= 60歲)比非老年人優先看病。
2.老年人按年齡從大到小的順序看病,年齡相同的按登記的先後順序排序。
3.非老年人按登記的先後順序看病。
【輸入】
第1行,輸入乙個小於100的正整數,表示病人的個數;
後面按照病人登記的先後順序,每行輸入乙個病人的資訊,包括:乙個長度小於10的字串表示病人的id(每個病人的id各不相同且只含數字和字母),乙個整數表示病人的年齡,中間用單個空格隔開。
【輸出】
按排好的看病順序輸出病人的id,每行乙個。
【輸入樣例】
5021075 40
004003 15
010158 67
021033 75
102012 30
【輸出樣例】
021033
010158
021075
004003
102012
【源**】
方法一:穩定排序(歸併排序演算法)
#include
#include
#include
using
namespace std;
#define sizen 110
struct patient
;void
merge_sort
(patient *arr, patient *tmp,
const
int s,
const
int e)
;//定義歸併排序函式
intmain()
else
} patient old_tmp[sizen]
;//臨時陣列
merge_sort
(old_people,old_tmp,
0,op-1)
;//呼叫歸併排序函式
for(
int i=op-
1; i>=
0; i--
)for
(int i=
0; i)return0;
}void
merge_sort
(patient *arr, patient *tmp,
const
int s,
const
int e)
}
方法二:穩定排序(氣泡排序演算法)
#include
#include
#include
using
namespace std;
#define sizen 110
struct patient
;void
bubble_sort
(patient *arr,
const
int len)
;//定義氣泡排序函式
intmain()
else
}bubble_sort
(old_people,op)
;//呼叫氣泡排序函式
for(
int i=
0; i)for
(int i=
0; i)return0;
}void
bubble_sort
(patient *arr,
const
int len)}if
(ok)
break;}
return
;}
方法三:穩定排序(插入排序演算法)
#include
#include
#include
using
namespace std;
#define sizen 110
struct patient
;void
insert_sort
(patient *arr,
const
int len)
;//定義插入排序函式
intmain()
else
}insert_sort
(old_people,op)
;//呼叫插入排序函式
for(
int i=
1; i<=op; i++
)for
(int i=
1; i<=ns; i++
)return0;
}void
insert_sort
(patient *arr,
const
int len)
if(j!=i-
1)arr[j+1]
=arr[0]
;//插入
}return
;}
方法四:不穩定排序(測試時有可能通不過,這裡僅展示不穩定排序)
#include
#include
#include
using
namespace std;
struct patient
;void
selectsort
(patient *arr,
int n)
;//定義選擇排序函式
intmain()
else
}selectsort
(old_people,op)
;//呼叫選擇排序函式
for(
int i=
0; i)for
(int i=
0; i)return0;
}void
selectsort
(patient *arr,
int n)}if
(x!=i)
}return
;}
資訊學奧賽一本通(C 版)
資訊學奧賽一本通 c 版 總目錄 1.資訊學奧賽一本通 c 版 刷題 記錄 2.資訊學奧賽一本通 c 版 第一部分 c 語言 第一章 c 語言入門 3.資訊學奧賽一本通 c 版 第一部分 c 語言 第二章 順序結構程式設計 4.資訊學奧賽一本通 c 版 第一部分 c 語言 第三章 程式的控制結構 5...
資訊學奧賽一本通C 語言 1215 迷宮
題目描述 一天extense在森林裡探險的時候不小心走入了乙個迷宮,迷宮可以看成是由n n的格點組成,每個格點只有2種狀態,和 前者表示可以通行後者表示不能通行。同時當extense處在某個格點時,他只能移動到東南西北 或者說上下左右 四個方向之一的相鄰格點上,extense想要從點a走到點b,問在...
資訊學奧賽一本通C 語言 1216 紅與黑
題目描述 有一間長方形的房子,地上鋪了紅色 黑色兩種顏色的正方形瓷磚。你站在其中一塊黑色的瓷磚上,只能向相鄰的黑色瓷磚移動。請寫乙個程式,計算你總共能夠到達多少塊黑色的瓷磚。輸入 包括多個資料集合。每個資料集合的第一行是兩個整數w和h,分別表示x方向和y方向瓷磚的數量。w和h都不超過20。在接下來的...