09-排序1 排序(25 分)


給定N個(長整型范圍內的)整數,要求輸出從小到大排序后的結果。

本題旨在測試各種不同的排序算法在各種數據情況下的表現。各組測試數據特點如下:

  • 數據1:只有1個元素;
  • 數據2:11個不相同的整數,測試基本正確性;
  • 數據3:103個隨機整數;
  • 數據4:104個隨機整數;
  • 數據5:105個隨機整數;
  • 數據6:105個順序整數;
  • 數據7:105個逆序整數;
  • 數據8:105個基本有序的整數;
  • 數據9:105個隨機正整數,每個數字不超過1000。

    輸入格式:

    輸入第一行給出正整數N(105​​),隨后一行給出N個(長整型范圍內的)整數,其間以空格分隔。

    輸出格式:

    在一行中輸出從小到大排序后的結果,數字間以1個空格分隔,行末不得有多余空格。

    輸入樣例:

    11
    4 981 10 -17 0 -20 29 50 8 43 -5
    

    輸出樣例:

    -20 -17 -5 0 4 8 10 29 43 50 981
    

我的答案,冒泡排序會有3個點超時

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 #include <unistd.h>
 4 
 5 void Read(long int A[], long int N)
 6 {
 7     int i;
 8     for(i=0;i<N;i++) {
 9         if(i!=N-1)
10             scanf("%ld ", &A[i]);
11         else
12             scanf("%ld", &A[i]);
13     }
14 }
15 
16 void Print(long int A[], int N)
17 {
18     int i;
19 
20     for(i=0;i<N;i++) {
21         if(i!=N-1)
22             printf("%ld ", A[i]);
23         else
24             printf("%ld\n", A[i]);
25     }
26 }
27 
28 void Bubble_Sort(long int A[], int N)
29 {
30     int i=0, j=0, flag=0;
31     long int tmp=0;
32     for(i=N-1;i>=0;i--) {
33         flag = 0;
34         for(j=0;j<i;j++) {
35             if(A[j] > A[j+1]) {
36                 tmp = A[j+1];
37                 A[j+1] = A[j];
38                 A[j] = tmp;
39                 flag = 1;
40             }
41         }
42         if(flag == 0) break;
43         // Print(A, N);
44     }
45 }
46 
47 void InsertionSort(long int A[], int N)
48 {
49     int i, j;
50     long int tmp;
51 
52     for(i=1;i<N;i++) {
53         tmp = A[i];
54         for(j=i;j>0&&A[j-1]>tmp;j--)
55             A[j] = A[j-1];
56         A[j] = tmp;
57     }
58 }
59 
60 int main()
61 {
62     long int *A = NULL;
63     int N = 0;
64     scanf("%d\n", &N);
65     A =(long int*)malloc(sizeof(long int)*N);
66     Read(A, N);
67 
68     // Bubble_Sort(A, N);
69     InsertionSort(A, N);
70     Print(A, N);
71 
72     return 0;
73 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM