当前位置: 首页 > article >正文

排序-多语言

目录

C 语言实现

方法 1: 选择排序

方法 2: 冒泡排序

方法 3: 插入排序 

方法 4: 快速排序 

Python 实现

Java 实现

Js 实现

示例输入输出


题目:对10个数进行排序。

程序分析:可以利用选择法,即从后9个比较过程中,选择一个最小的与第一个元素交换, 下次类推,即用第二个元素与后8个进行比较,并进行交换。

C 语言实现

方法 1: 选择排序

#include <stdio.h>

#define N 10 // 定义常量 N 为 10

int main() {
    int i, j, a[N], temp;

    // 输入 10 个数字
    printf("请输入 10 个数字:\n");
    for (i = 0; i < N; i++) {
        scanf("%d", &a[i]);
    }

    // 选择排序
    for (i = 0; i < N - 1; i++) {
        int min = i; // 假设当前索引 i 是最小值的索引
        for (j = i + 1; j < N; j++) {
            if (a[min] > a[j]) {
                min = j; // 找到更小的值的索引
            }
        }
        // 如果找到的最小值索引不是 i,则交换
        if (min != i) {
            temp = a[min];
            a[min] = a[i];
            a[i] = temp;
        }
    }

    // 输出排序结果
    printf("排序结果是:\n");
    for (i = 0; i < N; i++) {
        printf("%d ", a[i]);
    }
    printf("\n");

    return 0;
}

代码说明:

  1. 输入部分:程序首先提示用户输入 10 个数字,并将其存储在数组 a 中。
  2. 选择排序:使用选择排序算法对数组进行排序。外层循环遍历数组的每个元素,内层循环找到当前未排序部分的最小值,并将其与当前元素交换。
  3. 输出部分:最后,程序打印排序后的数组。

使用方法:

  1. 将代码复制到 C 语言编译器中。
  2. 编译并运行程序。
  3. 输入 10 个整数,程序将输出排序后的结果。

方法 2: 冒泡排序

#include <stdio.h>

#define N 10 // 定义常量 N 为 10

int main() {
    int i, j, a[N], temp;

    // 输入 10 个数字
    printf("请输入 10 个数字:\n");
    for (i = 0; i < N; i++) {
        scanf("%d", &a[i]);
    }

    // 冒泡排序
    for (i = 0; i < N - 1; i++) {
        for (j = 0; j < N - 1 - i; j++) {
            if (a[j] > a[j + 1]) {
                // 交换
                temp = a[j];
                a[j] = a[j + 1];
                a[j + 1] = temp;
            }
        }
    }

    // 输出排序结果
    printf("排序结果是:\n");
    for (i = 0; i < N; i++) {
        printf("%d ", a[i]);
    }
    printf("\n");

    return 0;
}

方法 3: 插入排序 

#include <stdio.h>

#define N 10 // 定义常量 N 为 10

int main() {
    int i, j, a[N], key;

    // 输入 10 个数字
    printf("请输入 10 个数字:\n");
    for (i = 0; i < N; i++) {
        scanf("%d", &a[i]);
    }

    // 插入排序
    for (i = 1; i < N; i++) {
        key = a[i];
        j = i - 1;

        // 将大于 key 的元素移动到前面
        while (j >= 0 && a[j] > key) {
            a[j + 1] = a[j];
            j--;
        }
        a[j + 1] = key; // 插入 key
    }

    // 输出排序结果
    printf("排序结果是:\n");
    for (i = 0; i < N; i++) {
        printf("%d ", a[i]);
    }
    printf("\n");

    return 0;
}

方法 4: 快速排序 

#include <stdio.h>

#define N 10 // 定义常量 N 为 10

// 快速排序的分区函数
int partition(int arr[], int low, int high) {
    int pivot = arr[high]; // 选择最后一个元素作为基准
    int i = (low - 1); // 小于基准的元素的索引

    for (int j = low; j < high; j++) {
        if (arr[j] < pivot) {
            i++;
            // 交换
            int temp = arr[i];
            arr[i] = arr[j];
            arr[j] = temp;
        }
    }
    // 将基准元素放到正确的位置
    int temp = arr[i + 1];
    arr[i + 1] = arr[high];
    arr[high] = temp;
    return (i + 1);
}

// 快速排序函数
void quickSort(int arr[], int low, int high) {
    if (low < high) {
        int pi = partition(arr, low, high); // 获取分区索引
        quickSort(arr, low, pi - 1); // 递归排序左半部分
        quickSort(arr, pi + 1, high); // 递归排序右半部分
    }
}

int main() {
    int a[N];

    // 输入 10 个数字
    printf("请输入 10 个数字:\n");
    for (int i = 0; i < N; i++) {
        scanf("%d", &a[i]);
    }

    // 调用快速排序
    quickSort(a, 0, N - 1);

    // 输出排序结果
    printf("排序结果是:\n");
    for (int i = 0; i < N; i++) {
        printf("%d ", a[i]);
    }
    printf("\n");

    return 0;
}

Python 实现

该程序将输入 10 个数字并对其进行排序,然后输出排序结果。

# 定义常量 N 为 10
N = 10

# 输入 10 个数字
a = []
print("请输入 10 个数字:")
for i in range(N):
    num = int(input())
    a.append(num)

# 选择排序
for i in range(N - 1):
    min_index = i  # 假设当前索引 i 是最小值的索引
    for j in range(i + 1, N):
        if a[min_index] > a[j]:
            min_index = j  # 找到更小的值的索引
    # 如果找到的最小值索引不是 i,则交换
    if min_index != i:
        a[min_index], a[i] = a[i], a[min_index]  # 交换

# 输出排序结果
print("排序结果是:")
for num in a:
    print(num, end=' ')
print()  # 换行
  1. 输入部分:使用 input() 函数读取用户输入的 10 个数字,并将其存储在列表 a 中。
  2. 选择排序:与 C 语言中的选择排序逻辑相同,使用嵌套循环找到最小值并进行交换。
  3. 输出部分:使用 print() 函数输出排序后的结果。

Java 实现

该程序将输入 10 个数字并对其进行排序,然后输出排序结果。

import java.util.Scanner;

public class SelectionSort {
    public static void main(String[] args) {
        final int N = 10; // 定义常量 N 为 10
        int[] a = new int[N]; // 创建数组

        // 输入 10 个数字
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入 10 个数字:");
        for (int i = 0; i < N; i++) {
            a[i] = scanner.nextInt();
        }

        // 选择排序
        for (int i = 0; i < N - 1; i++) {
            int minIndex = i; // 假设当前索引 i 是最小值的索引
            for (int j = i + 1; j < N; j++) {
                if (a[minIndex] > a[j]) {
                    minIndex = j; // 找到更小的值的索引
                }
            }
            // 如果找到的最小值索引不是 i,则交换
            if (minIndex != i) {
                int temp = a[minIndex];
                a[minIndex] = a[i];
                a[i] = temp;
            }
        }

        // 输出排序结果
        System.out.println("排序结果是:");
        for (int i = 0; i < N; i++) {
            System.out.print(a[i] + " ");
        }
        System.out.println(); // 换行

        scanner.close(); // 关闭扫描器
    }
}
  1. 输入部分:使用 Scanner 类读取用户输入的 10 个数字,并将其存储在数组 a 中。
  2. 选择排序:与 C 语言中的选择排序逻辑相同,使用嵌套循环找到最小值并进行交换。
  3. 输出部分:使用 System.out.print() 输出排序后的结果。

Js 实现

该程序将输入 10 个数字并对其进行排序,然后输出排序结果。

// 定义常量 N 为 10
const N = 10;
let a = [];

// 输入 10 个数字
console.log("请输入 10 个数字:");
for (let i = 0; i < N; i++) {
    const num = parseInt(prompt(`输入第 ${i + 1} 个数字:`)); // 使用 prompt 获取用户输入
    a.push(num); // 将输入的数字添加到数组中
}

// 选择排序
for (let i = 0; i < N - 1; i++) {
    let minIndex = i; // 假设当前索引 i 是最小值的索引
    for (let j = i + 1; j < N; j++) {
        if (a[minIndex] > a[j]) {
            minIndex = j; // 找到更小的值的索引
        }
    }
    // 如果找到的最小值索引不是 i,则交换
    if (minIndex !== i) {
        let temp = a[minIndex];
        a[minIndex] = a[i];
        a[i] = temp;
    }
}

// 输出排序结果
console.log("排序结果是:");
console.log(a.join(" ")); // 使用 join 方法将数组转换为字符串并输出
  1. 输入部分:使用 prompt 函数获取用户输入的 10 个数字,并将其存储在数组 a 中。请注意,prompt 函数在浏览器环境中有效。
  2. 选择排序:与 C 语言中的选择排序逻辑相同,使用嵌套循环找到最小值并进行交换。
  3. 输出部分:使用 console.log() 输出排序后的结果。

示例输入输出

请输入 10 个数字:
输入第 1 个数字: 34
输入第 2 个数字: 12
输入第 3 个数字: 5
输入第 4 个数字: 67
输入第 5 个数字: 23
输入第 6 个数字: 89
输入第 7 个数字: 1
输入第 8 个数字: 45
输入第 9 个数字: 78
输入第 10 个数字: 3
排序结果是:
1 3 5 12 23 34 45 67 78 89

http://www.kler.cn/a/418250.html

相关文章:

  • ehr系统建设方案,人力资源功能模块主要分为哪些,hrm平台实际案例源码,springboot人力资源系统,vue,JAVA语言hr系统(源码)
  • API 与 SDK 之间的区别
  • 三十二:网络爬虫的工作原理与应对方式
  • 云计算的发展历史与未来展望
  • 【HarmonyOS学习日志(11)】计算机网络之概念,组成和功能
  • Vue3 开源UI 框架推荐 (大全)
  • MySQL 利用JSON特性完成复杂数据存储和查询
  • 详解高斯消元
  • Axure PR 9 随机函数 设计交互
  • 每天五分钟机器学习:平行和重合
  • MySQL Workbench 数据库建模详解:从设计到实践
  • <三>51单片机PWM开发SG90和超声测距
  • C++中 测算 不定长数据 的 长度 的方法
  • 追寻红色足迹,领略西湖古韵今风|中共杭州美创科技有限公司支部党建活动纪实
  • ESP32-S3模组上跑通ES8388(9)
  • 完全二叉树的应用--堆
  • RocketMQ负载均衡机制解析
  • spring boot整合ArtemisMQ进行手动消息确认
  • 了解哈希并用线性探测和链地址法解决哈希冲突
  • Asio2网络库
  • 微信小程序首页实现轮廓图及动态渲染的高级教程
  • USBasp给arduino nano烧写bootloader
  • 使用lumerical脚本语言创建定向耦合器并进行数据分析(纯代码实现)
  • 【c++篇】:探索哈希表--数据结构中的独特存在,打开数据组织与查找的新视界
  • 深入解析 Kubernetes 节点操作:Cordon、Uncordon 和 Drain 的使用与最佳实践
  • Leecode刷题C语言之N皇后