插入排序法---题目
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了插入排序法---题目相关的知识,希望对你有一定的参考价值。
题目内容:
實作插入排序法讓一個序列的數字遞增,並輸出數字總共交換了幾次。
比如說一個序列1 3 7 9 2,前四個數字都已經排好了,這時候第五個數字2進來,他必須跟9,7,3交換使得序列變成1 2 3 7 9。這個數字2的交換次數就是3次。
输入格式:
輸入第一行為一個數字T,代表測試資料的筆數。接下來有T筆測資,每筆測資第一行為一個正整數N,表示這筆測資有N個數字。每筆測資的第二行會有N個數字,每個數字間以空格隔開。
數字範圍:
0 < N <= 100
0 <= 序列內的數字 <= 1000000
输出格式:
輸出一行數字,將每筆測資的答案加總後輸出。
输入样例:
3
5
5 4 3 2 1
3
1 2 3
6
1 3 5 2 4 6
输出样例:
13
时间限制:500ms内存限制:32000kb
实现代码:
1 #include <stdio.h> 2 3 int sort(int *,int n); 4 5 int main(void){ 6 int arr[100]; 7 int t,n; 8 int sum = 0; 9 int i,j; 10 11 scanf("%d\n",&t); 12 for(i = 1; i<=t;i++){ 13 scanf("%d\n",&n); 14 15 for(j = 0;j<n;j++){ 16 scanf("%d",&arr[j]); 17 } 18 19 sum +=sort(arr,n); 20 } 21 22 printf("%d\n",sum); 23 return 0; 24 } 25 26 int sort(int *p,int n){ 27 int i,j,key,count = 0; 28 29 for(i = 1; i < n ;i++){ 30 key = p[i]; 31 for(j=i; j>0 && p[j-1]>key; j--){ 32 p[j] = p[j-1]; 33 count++; 34 } 35 p[j] = key; 36 } 37 38 return count; 39 }
以上是关于插入排序法---题目的主要内容,如果未能解决你的问题,请参考以下文章