码迷,mamicode.com
首页 > 编程语言 > 详细

插入排序法---题目

时间:2016-02-29 22:58:43      阅读:425      评论:0      收藏:0      [点我收藏+]

标签:

题目内容:

實作插入排序法讓一個序列的數字遞增,並輸出數字總共交換了幾次。

比如說一個序列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 }

 

插入排序法---题目

标签:

原文地址:http://www.cnblogs.com/fuchen1994/p/5228986.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!