直接插入排序

发布于:2024-11-03 ⋅ 阅读:(132) ⋅ 点赞:(0)


💐The Begin💐点点关注,收藏不迷路💐

直接插入排序。

输入

输入n个整数,中间用空格分隔。

输出

输出排序后的数据,每个整数后跟一个空格。

样例输入

5 1 3 6 10

样例输出

1 3 5 6 10

C语言版本

#include <stdio.h>
#include <stdlib.h>

#define MAX_LEN 10000001

int main() {
    int arr[MAX_LEN]; // arr:用于存储输入整数的数组,假设最多输入MAX_LEN个整数
    int num_count; // num_count:实际输入整数的个数

    num_count = 0;

    // 读取输入的整数,直到遇到换行符或达到数组最大长度
    while (num_count < MAX_LEN && scanf("%d", &arr[num_count]) == 1) {
        num_count++; // 每成功读取一个整数,个数加一
    }

    // 冒泡排序算法对数组进行排序
    for (int i = 0; i < num_count - 1; i++) {
        for (int j = 0; j < num_count - i - 1; j++) {
            if (arr[j] > arr[j + 1]) {
                int temp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = temp; // 交换相邻两个元素,使较大的元素往后移
            }
        }
    }

    // 输出排序后的数组
    for (int i = 0; i < num_count; i++) {
        printf("%d ", arr[i]); // 输出每个整数,后面跟一个空格
    }
    printf("\n");

    return 0;
}

C++ 版本

#include <iostream>
#include <vector>

int main() {
    std::vector<int> num_vec; // num_vec:用于存储输入整数的动态数组

    int num; // num:临时变量,用于存储每次读取的整数

    // 读取输入的整数,直到遇到换行符(通过判断输入流状态)
    while (std::cin >> num) {
        num_vec.push_back(num); // 将读取的整数添加到动态数组中
    }

    int num_count = num_vec.size(); // num_count:实际输入整数的个数

    // 冒泡排序算法对数组进行排序
    for (int i = 0; i < num_count - 1; i++) {
        for (int j = 0; j < num_count - i - 1; j++) {
            if (num_vec[j] > num_vec[j + 1]) {
                int temp = num_vec[j];
                num_vec[j] = num_vec[j + 1];
                num_vec[j + 1] = temp; // 交换相邻两个元素,使较大的元素往后移
            }
        }
    }

    // 输出排序后的数组
    for (int i = 0; i < num_count; i++) {
        std::cout << num_vec[i] << " "; // 输出每个整数,后面跟一个空格
    }
    std::cout << std::endl;

    return 0;
}

Java版本

import java.util.ArrayList;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        ArrayList<Integer> numList = new ArrayList<>(); // numList:用于存储输入整数的动态列表

        Scanner scanner = new Scanner(System.in);

        int num; // num:临时变量,用于存储每次读取的整数

        // 读取输入的整数,直到遇到换行符(通过判断输入流状态)
        while (scanner.hasNextInt()) {
            num = scanner.nextInt();
            numList.add(num); // 将读取的整数添加到动态列表中
        }

        int num_count = numList.size(); // num_count:实际输入整数的个数

        // 冒泡排序算法对列表进行排序
        for (int i = 0; i < num_count - 1; i++) {
            for (int j = 0; j < num_count - i - 1; j++) {
                if (numList.get(j) > numList.get(j + 1)) {
                    int temp = numList.get(j);
                    numList.set(j, numList.get(j + 1));
                    numList.set(j + 1, temp); // 交换相邻两个元素,使较大的元素往后移
                }
            }
        }

        // 输出排序后的列表
        for (int i = 0; i < num_count; i++) {
            System.out.print(numList.get(i) + " "); // 输出每个整数,后面跟一个空格
        }
        System.out.println();

        scanner.close();
    }
}

Python版本

nums = []  # nums:用于存储输入整数的列表

# 读取输入的整数,直到遇到换行符(通过异常处理来判断输入结束)
try:
    while True:
        num = int(input())
        nums.append(num)
except:
    pass

num_count = len(nums)  # num_count:实际输入整数的个数

# 冒泡排序算法对列表进行排序
for i in range(num_count - 1):
    for j in range(0, num_count - i - 1):
        if nums[j] > nums[j + 1]:
            nums[j], nums[j + 1] = nums[j + 1], nums[j]  # 交换相邻两个元素,使较大的元素往后移

# 输出排序后的列表
for num in nums:
    print(num, end=" ")
print()

在这里插入图片描述


💐The End💐点点关注,收藏不迷路💐

网站公告

今日签到

点亮在社区的每一天
去签到