简单排序算法代码

以下是几种简单排序算法的代码实现,涵盖插入排序、选择排序、冒泡排序和快速排序:

一、插入排序(Insertion Sort)

原理 :通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。

C++实现

void insertionSort(int *a, int n) {
    int t;
    for(int i=1; i<n; i++) {
        t = a[i];
        j = i-1;
        while(j>=0 && t<a[j]) {
            a[j+1] = a[j];
            j--;
        }
        a[j+1] = t;
        cout << 'J'<< j << endl;
    }
}

二、选择排序(Selection Sort)

原理 :每次从未排序部分选择最小(或最大)元素,放到已排序序列末尾。

C++实现

void selectionSort(int *a, int n) {
    int i, j, minIndex, temp;
    for(i=0; i<n-1; i++) {
        minIndex = i;
        for(j=i+1; j<n; j++) {
            if(a[j] < a[minIndex]) minIndex = j;
        }
        if(minIndex != i) {
            temp = a[i];
            a[i] = a[minIndex];
            a[minIndex] = temp;
        }
    }
}

三、冒泡排序(Bubble Sort)

原理 :重复交换相邻未按顺序排列的元素,将最大(或最小)元素逐步“冒泡”到末尾。

C++实现

void bubbleSort(int *a, int n) {
    for(int i=0; i<n-1; i++) {
        bool swapped = false;
        for(int j=0; j<n-i-1; j++) {
            if(a[j] > a[j+1]) {
                swap(a[j], a[j+1]);
                swapped = true;
            }
        }
        if(!swapped) break; // 优化:若无交换则提前结束
    }
}

四、快速排序(Quick Sort)

原理 :通过基准元素将数组分为左右两部分,递归排序子序列。

C++实现

void quickSort(int *a, int low, int high) {
    if(low < high) {
        int pivot = a[low];
        int i = low, j = high;
        while(i < j) {
            while(i < j && a[j] >= pivot) j--;
            a[i] = a[j];
            while(i < j && a[i] < pivot) i++;
            a[j] = a[i];
        }
        a[i] = pivot;
        quickSort(a, low, i-1);
        quickSort(a, i+1, high);
    }
}

说明

  1. 插入排序选择排序 适用于小规模数据,时间复杂度为O(n²)。

  2. 冒泡排序 通过优化提前终止可提升效率,最坏情况仍为O(n²)。

本文《简单排序算法代码》系辅导客考试网原创,未经许可,禁止转载!合作方转载必需注明出处:https://www.fudaoke.com/exam/3029062.html

相关推荐

十大基本排序算法

十大基本排序算法可分为比较排序和非比较排序两大类,以下是具体分类及代表算法: 一、比较排序(基于元素比较) 冒泡排序 特点 :简单直观,稳定,平均时间复杂度O(n²),空间复杂度O(1)。 原理 :通过相邻元素交换,将最大值逐步“浮”到末尾。 选择排序 特点 :每次选择最小(或最大)元素放到已排序序列末尾,不稳定,平均时间复杂度O(n²)。 原理 :遍历未排序部分

2025-05-12 人工智能

简单选择排序算法流程图

​​简单选择排序是一种通过多次遍历未排序部分、每次选择最小(或最大)元素放置到已排序末端的算法,其核心流程包括初始化、比较、交换和迭代四个步骤。​ ​ 以下是具体实现逻辑和关键要点: ​​初始化与遍历​ ​ 算法从数组第一个元素开始,将其视为当前最小值,并依次与后续元素比较。每次遍历未排序部分时,记录最小值的索引位置。 ​​比较与更新​ ​ 在未排序部分中,若发现比当前最小值更小的元素

2025-05-12 人工智能

简单选择排序算法图解

简单选择排序是一种直观的排序算法,通过多次遍历未排序部分选出最小(或最大)元素,逐步完成整体排序。其核心思想是*“选择-交换”*,时间复杂度为$O(n^2)$,适合小规模数据但效率低于快速排序等高级算法。 算法步骤图解 初始状态 :将数组分为已排序(初始为空)和未排序两部分。 选择最小值 :遍历未排序部分,找到最小元素的下标。 交换位置 :将最小元素与未排序部分的第一个元素交换,扩大已排序区间。

2025-05-12 人工智能

三个数排序算法

三个数排序算法的核心思想是通过比较和交换操作,将三个数按从小到大或从大到小的顺序排列。以下是常见的排序方法及实现方式: 一、三数排序常用方法 三路比较法(顺序比较法) 通过三次两两比较确定三个数的大小关系,最终按顺序排列。具体步骤: 比较A与B,若A > B则交换; 比较A与C,若A > C则交换; 比较B与C,若B > C则交换。 该算法简单高效,适用于三个数的排序。

2025-05-12 人工智能

c最快的排序算法

C语言中最快的排序算法是快速排序(QuickSort)。 在C语言中,快速排序被认为是最快的通用排序算法之一。以下是快速排序的一些关键亮点和详细论述: 时间复杂度 : 平均情况 :快速排序的平均时间复杂度为O(n log n),其中n是待排序元素的数量。 最坏情况 :虽然快速排序的最坏时间复杂度为O(n^2),但通过合理的枢轴选择策略,如随机选择或三数取中法,可以有效避免这种情况。 空间复杂度

2025-05-12 人工智能

排序计算公式

排序计算公式主要分为通用排序算法和Excel专用函数两类,具体如下: 一、通用排序算法公式 冒泡排序 通过相邻元素比较和交换,将最大值逐步移动到末尾。时间复杂度为O(n²)。 公式示例 : for i from 0 to length-2 do for j from 0 to length-i-2 do if arr[j] > arr[j+1] then swap arr[j]

2025-05-12 人工智能

十大排序算法总结

冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序、堆排序、计数排序、桶排序和基数排序是十大经典排序算法。它们各自有不同的特点、时间复杂度和适用场景,是学习和应用排序算法的基础。 1. 冒泡排序 冒泡排序通过相邻元素的比较和交换,将最大(或最小)元素“冒泡”到数组的末尾。其时间复杂度为O(n²),适合小规模数据排序。 2. 选择排序 选择排序每次从未排序部分选择最小(或最大)元素

2025-05-12 人工智能

10种排序算法

​​排序算法是计算机科学中用于将数据按特定规则重新排列的核心工具,其效率直接影响大规模数据处理的性能。​ ​ 常见的10种算法包括​​冒泡排序​ ​、​​选择排序​ ​、​​插入排序​ ​等基础算法,以及​​快速排序​ ​、​​归并排序​ ​等高效分治策略,还有​​计数排序​ ​、​​桶排序​ ​等非比较型算法,各有其适用场景与优劣势。 ​​冒泡排序​ ​:通过相邻元素比较交换

2025-05-12 人工智能

趣味数学编程

‌趣味数学编程是将数学知识与编程技能相结合的创新方式,通过代码实现数学问题的可视化、互动化求解,既能提升逻辑思维,又能让学习过程充满乐趣。 ‌ 其核心价值在于‌用程序演绎数学之美 ‌,‌通过游戏化设计降低学习门槛 ‌,并‌在解决实际问题中培养跨学科能力 ‌。 ‌数学可视化的魔法 ‌ 编程能将抽象的数学概念转化为动态图形。例如用Python的Matplotlib绘制分形图案

2025-05-12 人工智能

编程公式大全

在探讨编程公式大全 时,我们实际上是在讨论一套帮助开发者高效解决问题、优化代码以及实现复杂功能的工具集。这些公式涵盖了从基础算术运算到高级算法设计,再到特定领域如图形处理或数据科学中的专用公式。理解并掌握这些公式能够极大地提升编程效率和代码质量。 基本数值运算 :包括加法、减法、乘法、除法及取模操作等基础数学运算符,它们是所有编程语言中不可或缺的部分。正确使用这些运算符对于任何程序来说都是构建块

2025-05-12 人工智能

10大经典排序算法

​​排序算法是计算机科学的核心基础,高效处理数据的关键在于选择适合场景的算法​ ​。​​冒泡排序​ ​简单但效率低,​​快速排序​ ​以 O ( n log n ) 平均时间复杂度成为通用首选,而​​基数排序​ ​在特定整数范围下可达线性复杂度 O ( n ) 。以下是十大经典算法的深度解析与应用指南: ​​冒泡排序​ ​:通过相邻元素交换逐步“浮”出最大值,适合小规模数据教学演示,但 O (

2025-05-12 人工智能

八大排序算法图解

‌排序算法是计算机科学中用于将数据按特定顺序排列的基础工具,常见的八大算法包括冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序、堆排序和基数排序。 ‌ 这些算法在‌时间复杂度、空间复杂度、稳定性 ‌和‌适用场景 ‌上各有优劣,理解其原理和实现方式对优化程序性能至关重要。 ‌冒泡排序 ‌ 通过相邻元素两两比较并交换,将最大(或最小)值逐步“冒泡”到数组末端。‌优点 ‌是简单易懂,‌缺点

2025-05-12 人工智能

编程输入10个整数从大到小排序

编程输入10个整数并从大到小排序是常见的数据处理任务,以下为操作步骤及示例代码。 1. 选择排序法 选择排序是一种简单直观的排序方法,适用于小规模数据集。其核心思想是: 步骤 :遍历数组,找到最大值; 将最大值与当前索引位置的元素交换; 移动到下一个索引,重复上述过程,直到数组完全有序。 示例代码 (C语言): c 复制 #include <stdio.h> void

2025-05-12 人工智能

c++从大到小排序怎么排

在C++中实现数组从大到小排序,​​最简洁高效的方法是使用标准库中的sort() 函数,结合自定义比较函数或内置的greater<T>() 函数​ ​。该方法只需3行核心代码,时间复杂度为 O ( n log n ) ,适用于各类基础数据类型和自定义结构体。 ​​使用标准库sort() 函数​ ​:包含<algorithm> 头文件后,通过sort(起始地址, 结束地址,

2025-05-12 人工智能

怎么给三个数从小到大排序编程

在编程中,给三个数从小到大排序 是一个基础但重要的任务,可以通过多种方法实现。无论是使用简单的比较交换逻辑,还是借助编程语言内置的排序函数,都能高效地完成这一任务。理解这些方法不仅有助于解决具体的排序问题,还能加深对算法和数据结构的认识。 直接比较法 :通过编写条件语句逐一比较三个数,并根据大小关系进行交换。这种方法直观易懂,适合初学者理解和实践。例如

2025-05-12 人工智能

编程排序的三种方法

编程中常用的三种基础排序方法是冒泡排序、选择排序和插入排序。以下是具体介绍: 冒泡排序(Bubble Sort) 通过重复遍历待排序序列,比较相邻元素并交换顺序错误的元素,将最大(或最小)的元素逐步“冒泡”到序列末尾。时间复杂度为O(n²),适用于小规模数据。 选择排序(Selection Sort) 每次从未排序序列中选择最小(或最大)的元素,将其与未排序部分的第一个元素交换位置

2025-05-12 人工智能

数字排序从大到小怎么排python

在Python中,对数字进行从大到小排序主要有以下两种方法: 一、使用sorted() 函数 基本用法 通过设置reverse=True 参数实现降序排序,返回新列表。 ```python numbers = [5, 2, 8, 1, 9] sorted_numbers = sorted(numbers, reverse=True) print(sorted_numbers) # 输出: [9,

2025-05-12 人工智能

c语言4个数从大到小排序

在C语言中实现‌4个数从大到小排序 ‌的核心方法是‌利用数组存储数据 ‌,通过‌循环嵌套比较 ‌或‌排序算法 ‌(如冒泡排序)完成数值交换,最终输出有序结果。以下是具体实现步骤和优化思路: ‌数据存储与输入 ‌ 使用int 类型数组存储4个整数,通过scanf 函数接收用户输入。例如: c Copy Code int nums[4 ]; for (int i = 0 ; i < 4

2025-05-12 人工智能

编程从低到高的顺序

​​编程从低到高的顺序可以概括为:从基础语法入门到算法与数据结构进阶,再到专项领域(如Web开发、数据库、人工智能等)的深入实践,最终形成完整的工程化能力。​ ​ 这一路径既符合学习规律,又能逐步提升解决复杂问题的能力,同时兼顾就业市场需求和技术发展趋势。 ​​入门语言选择​ ​ 建议从Python、JavaScript等易学且应用广泛的语言开始,掌握变量、循环、函数等基础概念

2025-05-12 人工智能

编程输入三个数从小到大排序

以下是使用Python和C语言实现输入三个数并从小到大排序的完整解决方案: 一、Python实现方法 输入处理 使用input() 函数获取用户输入的三个整数,以空格分隔,通过split() 方法分割成字符串列表,再使用map(int, ...) 转换为整数列表。 排序操作 方法一:手动排序 (冒泡排序) 通过嵌套循环比较相邻元素,若顺序错误则交换,最终得到升序列表。 - 方法二:内置函数

2025-05-12 人工智能
查看更多
首页 顶部