设置 | 登录 | 注册

作者共发了5篇帖子。

【C語言】基礎練習 數列排序

1楼 巨大八爪鱼 2015-12-2 17:38
問題描述
  給定一個長度為n的數列,將這個數列按從小到大的順序排列。1<=n<=200
輸入格式
  第一行為一個整數n。
  第二行包含n個整數,為待排序的數,每個整數的絕對值小於10000。
輸出格式
  輸出一行,按從小到大的順序輸出排序後的數列。
樣例輸入
5
8 3 6 4 9
樣例輸出
3 4 6 8 9

【我的代碼】
#include <stdio.h>
#include <stdlib.h>

int main()
{
    int i, j, n, temp;
    int *arr;
    scanf("%d", &n);
    arr = (int *)malloc(n * sizeof(int));
   
    // Input
    for (i = 0; i < n; i++)
        scanf("%d", arr + i);
   
    // Sort
    for (i = 0; i < n; i++)
    {
        for (j = 0; j < n - i - 1; j++)
        {
            if (arr[j] > arr[j + 1])
            {
                temp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = temp;
            }
        }
    }
   
    // Output
    for (i = 0; i < n; i++)
        printf("%d ", arr[i]);
    putchar('\n');
   
    free(arr);
    return 0;
}
2楼 巨大八爪鱼 2015-12-2 17:39
評測結果    正確
得分    100
CPU使用    0ms
內存使用    1.601MB
3楼 巨大八爪鱼 2015-12-2 17:39
在這個程序中,我是根據n的大小來動態創建數組的,數組的大小並不是固定的。
4楼 巨大八爪鱼 2015-12-2 17:40
5楼 巨大八爪鱼 2015-12-2 17:41
冒泡排序法的要點:
大循環是完整的循環for (i = 0; i < n; i++)
小循環從0開始,n-i-1結束。for (j = 0; j < n - i - 1; j++)
當arr[j] > arr[j+1]時,小循環內部將arr[j]和arr[j+1]交換

内容转换:

回复帖子
内容:
用户名: 您目前是匿名发表。
验证码:
看不清?换一张
©2010-2025 Purasbar Ver3.0 [手机版] [桌面版]
除非另有声明,本站采用知识共享署名-相同方式共享 3.0 Unported许可协议进行许可。