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日

相关文章

  • JS排序之冒泡排序详解

    JS排序之冒泡排序详解 简介 冒泡排序是最基本,也是最容易实现的排序算法之一。它的基本思想是通过多次循环遍历数组,每次比较相邻两个元素的大小,如果发现顺序不对,就交换它们的位置,通过多次遍历和交换的操作,最终使得整个数组变得有序。 基本思路 遍历数组,将相邻元素的大小进行比较,如果前面元素大于后面元素,则交换它们的位置; 继续以相同的方式遍历数组,直到数组中…

    算法与数据结构 2023年5月19日
    00
  • java排序算法图文详解

    Java排序算法图文详解 在Java编程中,排序算法是非常重要且常见的一部分。本文将详细讲解Java中的各种排序算法及其实现,帮助读者了解不同算法的特点和使用场景,提高程序的效率和可读性。 排序算法分类 在Java中,常用的排序算法主要可以分为以下几类: 冒泡排序 选择排序 插入排序 快速排序 归并排序 堆排序 冒泡排序 冒泡排序是一种简单的排序算法,其原理…

    算法与数据结构 2023年5月19日
    00
  • C语言实现单链表的快速排序算法

    下面是详细的攻略: 单链表快速排序算法的原理 在单链表上实现快速排序,需要了解快速排序算法的原理。快速排序是一种常用的基于比较的排序算法,它的基本思想是:选取一个基准元素(pivot),将数组分成两个部分,一个部分是小于基准元素的,一个部分是大于基准元素的。然后对这两个部分分别递归进行快排,最终得到排序后的数组。 在单链表上,选择基准元素也是一样的,不同的是…

    算法与数据结构 2023年5月19日
    00
  • JavaScript算法面试题

    JavaScript算法面试题攻略 1. 理解算法 在准备 JavaScript 算法面试前,需要先了解什么是算法。算法是指解决问题的一系列步骤,常用于解决复杂的问题,在计算机科学中有非常重要的应用。 2. 熟悉常见数据结构 准备算法面试的重点是熟悉常见数据结构。这些数据结构包括数组、链表、栈、队列、堆、散列表等。 3. 学习算法题的分类 在解决算法问题之前…

    算法与数据结构 2023年5月19日
    00
  • Trie树_字典树(字符串排序)简介及实现

    接下来我将详细讲解“Trie树_字典树(字符串排序)简介及实现”的完整攻略。 什么是 Trie 树? Trie 树,也叫字典树,是一种树形数据结构,用于处理字符串匹配、排序等问题。它的特点是能够快速地查找特定前缀或后缀的字符串。 Trie 树的基本实现 Trie 树通常是一棵多叉树,其中根节点不包含任何字符,每个子节点包含一个字符,组成一个完整的字符串。下面…

    算法与数据结构 2023年5月19日
    00
  • C语言下快速排序(挖坑法)详解

    C语言下快速排序(挖坑法)详解 什么是快速排序 快速排序是将一个待排序的序列分成两部分,其中一部分的所有元素都比另一部分的所有元素小,然后再对这两部分分别进行排序,递归执行该操作直到将整个序列排好为止。快速排序使用了分治思想。由于在每一次的递归过程中,都将待排序的序列分成两部分,因此处理的数据量不断减少,使得算法的效率比较高。 快速排序的实现 挖坑法 挖坑法…

    算法与数据结构 2023年5月19日
    00
  • 几种经典排序算法的JS实现方法

    一、冒泡排序 原理 冒泡排序将待排序元素两两比较,根据比较结果交换位置,一遍冒泡会让至少一个元素到达最终位置。重复这个过程,直到排序完成。 JS实现 function bubbleSort(arr) { const len = arr.length; for (let i = 0; i < len; i++) { for (let j = 0; j &…

    算法与数据结构 2023年5月19日
    00
  • redis zset实现滑动窗口限流的代码

    Redis ZSET(有序集合)非常适合实现滑动窗口限流。下面是实现滑动窗口限流的Redis ZSET代码攻略: 步骤一:定义一个键和窗口大小 为了使用Redis ZSET实现滑动窗口限流,您需要为每个限流器定义一个键。键的值将存储在Redis Sorted Set中,并且每个元素将具有其分数。我们将使用时间戳作为分数。此外,需要指定每个限制限流器的窗口大小…

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