c语言冒泡排序和选择排序的使用代码

下面是冒泡排序和选择排序的使用代码攻略。

冒泡排序和选择排序的使用代码

在C语言中,冒泡排序和选择排序都是经典的排序算法。本文将分别介绍它们的使用代码,以供参考。

冒泡排序

冒泡排序的基本思路是,相邻的元素两两比较,大的往后移,小的往前移,最终实现升序或降序排列的算法。

下面是一个简单的C语言冒泡排序的代码示例:

#include <stdio.h>

void bubble_sort(int arr[], int n) { 
   int i, j, temp;
   for (i = 0; i < n - 1; 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;
           }
       }
   }
}

int main() {
   int arr[] = {5, 8, 2, 7, 1};
   int n = sizeof(arr) / sizeof(arr[0]);
   bubble_sort(arr, n);
   int i;
   for (i = 0; i < n; i++){
    printf("%d ", arr[i]);
   }
   return 0;
}

代码解释:

  1. bubble_sort 函数是一个冒泡排序的实现,接受一个数组和数组长度做为参数。内部嵌套两层循环,每次循环将相邻的两个元素比较,如果前一个比后一个大,则交换他们的值,这样每一轮下来,数组中最大(小)的元素就会被排到最后。
  2. main 函数中定义一个数组,分别传递给 bubble_sort 进行排序,最后使用循环输出排序后的结果。

选择排序

选择排序是另外一种简单的排序算法,它的主要思想是从未排序的元素中选取最小值(或最大值),放到已排序元素的末尾(或开头)。

下面是一个C语言选择排序的代码示例:

#include <stdio.h> 

void selection_sort(int arr[], int n) {
   int i, j, min_index, temp;
   for (i = 0; i < n - 1; i++) {
       min_index = i;
       for (j = i + 1; j < n; j++) {
           if (arr[j] < arr[min_index]) {
               min_index = j;
           }
       }
       temp = arr[i];
       arr[i] = arr[min_index];
       arr[min_index] = temp;
   }
}

int main() {
   int arr[] = { 5, 8, 2, 7, 1 };
   int n = sizeof(arr) / sizeof(arr[0]);
   selection_sort(arr, n);
   int i;
   for (i = 0; i < n; i++){
    printf("%d ", arr[i]);
   }
   return 0;
}

代码解释:

  1. selection_sort 函数是一个选择排序的实现,接受一个数组和数组长度做为参数。内部嵌套两层循环,外层循环每次处理一个元素,内层循环从未排序的元素中选出最小值,并记录其下标,最后将最小值移动到已排序元素的末尾。
  2. main 函数中定义一个数组,分别传递给 selection_sort 进行排序,最后使用循环输出排序后的结果。

以上就是C语言冒泡排序和选择排序的使用代码的完整攻略。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:c语言冒泡排序和选择排序的使用代码 - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • C语言算法练习之数组元素排序

    C语言算法练习之数组元素排序攻略 1. 题目描述 给定一个整数数组,要求将其元素按照从小到大排序,并输出排序后的结果。要求不使用C语言中内置的排序函数。 2. 解题思路 可以通过选择排序、冒泡排序和快速排序等多种算法来解决这个问题。在这里我们介绍一种比较简单易懂的冒泡排序算法。 冒泡排序算法的核心思想是将相邻两个元素进行比较,并将较小的元素移到前面,重复这个…

    算法与数据结构 2023年5月19日
    00
  • Python排序算法之插入排序及其优化方案详解

    Python排序算法之插入排序及其优化方案详解 排序算法是程序员必须学习的基本算法之一,而插入排序算法是其中较为简单和实用的一种,本文将详细介绍插入排序算法的原理以及其常见优化方案。 插入排序算法 插入排序算法是一种简单直观的排序算法,其基本思想是将一个待排序的序列分解成两个子序列,其中一个序列比另一个序列要少一个元素,然后将元素一个一个地从未排序的子序列中…

    算法与数据结构 2023年5月19日
    00
  • C++详细讲解图的拓扑排序

    C++详细讲解图的拓扑排序 什么是拓扑排序 拓扑排序是对于有向无环图(Directed Acyclic Graph)的一种排序,其输出结果为图中每个节点的线性先后序列,满足如果存在一条从节点 A 到节点 B 的路径,则在序列中节点 A 出现在节点 B 的前面。 什么是有向无环图(DAG) 有向无环图是不包含环路并且有一个或多个源点和汇点的有向图。其中源点指没…

    算法与数据结构 2023年5月19日
    00
  • PHP实现二维数组按照指定的字段进行排序算法示例

    下面是详细讲解“PHP实现二维数组按照指定的字段进行排序算法示例”的完整攻略。 问题描述 有一个包含多个元素、每个元素又包含多个键值对的PHP二维数组,现在需要按照指定的某个字段对它们进行排序。怎么实现? 解决方法 我们可以使用PHP的usort()函数来实现。usort()函数是PHP的内置函数,可以通过自定义的排序函数来对数组进行排序。这里我们可以通过编…

    算法与数据结构 2023年5月19日
    00
  • PHP常用的排序和查找算法

    PHP常用的排序和查找算法 排序算法 冒泡排序 冒泡排序是一种简单的排序算法。 它多次遍历要排序的列表,每次比较相邻的两项,如果它们的顺序错误就把它们交换过来。 示例代码如下: function bubble_sort($arr) { $len = count($arr); for($i=1; $i<$len; $i++) { for($j=0; $j…

    算法与数据结构 2023年5月19日
    00
  • JS实现的计数排序与基数排序算法示例

    可能需要先说明一下,计数排序和基数排序都是针对整数排序的算法。 1. 计数排序 计数排序的基本思想是将每个元素出现的次数统计出来,并按顺序排列。计数排序不是基于元素比较的,而是建立在元素的值域范围较小的前提下的。因此,计数排序的时间复杂度是O(n+k),其中k是元素的值域大小。 算法步骤 统计每个数字出现的次数,得到一个长度为k的计数数组。 将计数数组进行变…

    算法与数据结构 2023年5月19日
    00
  • java实现波雷费密码算法示例代码

    Java实现波雷费密码算法的步骤如下: 首先,下载并添加bcprov-jdk15on-168.jar的BouncyCastle加密库。下载地址:https://www.bouncycastle.org/latest_releases.html 打开Java IDE,并新建一个Java项目。 在项目中创建一个新的Java类,并将其命名为“BlowfishCip…

    算法与数据结构 2023年5月19日
    00
  • JS实现随机化快速排序的实例代码

    下面是JS实现随机化快速排序的完整攻略。 什么是随机化快速排序 随机化快速排序是一个常用的排序算法,它能够在 $O(n \log n)$ 的时间复杂度下对一个数组进行排序。该算法的实现非常高效,因为它使用了分治的思想,并且使用的是原地排序,即不需要额外的存储空间。随机化快速排序的核心是分区(partition)操作,该操作能够将一个数组分成两个部分,一部分是…

    算法与数据结构 2023年5月19日
    00
合作推广
合作推广
分享本页
返回顶部