c语言编程笔录

您现在的位置是:首页 > 编程 > 编程经验

编程经验

c语言五个数从小到大排序编程

2023-06-15编程经验
前言排序是计算机科学中最基础的算法,一个好的排序算法应该能快速而准确地将一列无序的数据进行排列,并且在不同的场景下得到更佳的性能。冒泡排序冒泡排序是最简单的排序算法之一,也是最易懂的排序算法之一。其基本思想为不断比较相邻的两个元素,如果顺序不对就将它们交换位置,直到整个序列有序。1.算法

前言

排序是计算机科学中最基础的算法,一个好的排序算法应该能快速而准确地将一列无序的数据进行排列,并且在不同的场景下得到更佳的性能。

冒泡排序

冒泡排序是最简单的排序算法之一,也是最易懂的排序算法之一。其基本思想为不断比较相邻的两个元素,如果顺序不对就将它们交换位置,直到整个序列有序。

1.算法描述

(1)比较相邻的元素,如果前一个比后一个大,就交换这两个元素的位置。

(2)对每一对相邻的元素做同样的工作,从开始第一对到结尾的最后一对,这样一趟下来,最后的元素会是最大的数。

(3)针对所有的元素重复以上的操作,除了最后一个。

(4)重复 1、2、3 步骤直到排序完成。

2.代码实现

```c void bubbleSort(int arr[], int n) { int i, j; for (i = 0; i < n - 1; i++) // Last i elements are already sorted for (j = 0; j < n - i - 1; j++) if (arr[j] > arr[j + 1]) swap(&arr[j], &arr[j + 1]); } ```

选择排序

选择排序是一种简单直观的排序算法。其基本思想为每次遍历待排序数据,选出最小的元素,和当前索引位置的元素交换位置,重复该过程直到整个序列有序。

1.算法描述

(1)在未排序序列中找到最小(大)元素,存放到排序序列的起始位置。

(2)从剩余未排序元素中继续寻找最小(大)元素,放到已排序序列的末尾。

(3)重复第二步,直到所有元素均排序完毕。

2.代码实现

```c void selectionSort(int arr[], int n) { int i, j, min_idx; // One by one move boundary of unsorted subarray for (i = 0; i < n - 1; i++) { // Find the minimum element in unsorted array min_idx = i; for (j = i + 1; j < n; j++) if (arr[j] < arr[min_idx]) min_idx = j; // Swap the found minimum element with the first element swap(&arr[min_idx], &arr[i]); } } ```

快速排序

快速排序是一种常见的排序算法,其基本思想为选取一个基准元素,将序列中小于基准的元素放于其左边,大于基准的元素放于其右边,然后分别对两个子序列进行递归处理,直到整个序列有序。

1.算法描述

(1)从数列中挑出一个元素,称为 "基准"(pivot)。

(2)重新排列数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆放在基准的后面(相同的数可以到任何一边)。在这个分区结束之后,该基准就处于数列的中间位置。这个称为分区操作。

(3)递归地(recursive)把小于基准值的子数列和大于基准值的子数列排序。

2.代码实现

```c void quickSort(int arr[], int low, int high) { if (low < high) { /* pi is partitioning index, arr[p] is now at right place */ int pi = partition(arr, low, high); // Separately sort elements before partition and after partition quickSort(arr, low, pi - 1); quickSort(arr, pi + 1, high); } } int partition(int arr[], int low, int high) { int pivot = arr[high]; // pivot int i = (low - 1); // Index of smaller element for (int j = low; j <= high - 1; j++) { // If current element is smaller than the pivot if (arr[j] < pivot) { i++; // increment index of smaller element swap(&arr[i], &arr[j]); } } swap(&arr[i + 1], &arr[high]); return (i + 1); } ```