下面我会给您讲解如何实现九大排序算法的实例代码。
1. 排序算法简介
排序算法是计算机科学中重要的算法之一,是将元素按照一定规则进行排列的过程。常见的排序算法包括:冒泡排序、选择排序、插入排序、希尔排序、快速排序、归并排序、堆排序、计数排序和基数排序。
2. 实现九大排序算法的步骤
以下是九大排序算法的实现步骤:
- 冒泡排序:依次比较相邻的两个元素,将大的向后移。
- 选择排序:找出最小的元素,放在最前面,然后再从剩下的元素中找出最小的放在已排序的序列的后面。
- 插入排序:将一个元素插入到已经排序好的数组中的正确位置中。
- 希尔排序:分组插入排序,每次排序将间隔为 gap 的元素分为一组,对每一组进行插入排序。
- 快速排序:以一个关键字为基准,将序列划分为两个子序列,分别进行递归的排序。
- 归并排序:分治的思想,首先将序列分成两个子序列,对两个子序列分别进行归并排序,然后将两个已经排序好的子序列合并成一个有序的序列。
- 堆排序:将序列构建成一个大根堆或小根堆,然后依次将堆顶元素取出,得到排序后的序列。
- 计数排序:统计每个元素出现的次数,然后按照出现的顺序依次输出。
- 基数排序:按照位数依次排序,从最低位开始排序,直到最高位。
3. 示例说明
以冒泡排序和快速排序为例进行说明。
3.1 冒泡排序
冒泡排序的代码如下:
void bubble_sort(int arr[], int n) {
int temp;
for (int i = 0; i < n - 1; i++) {
for (int 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;
}
}
}
}
该代码中,首先定义一个变量 temp 用来临时存储交换的元素。然后通过两个嵌套的循环将相邻的元素进行比较,若前一个元素大于后一个元素,则交换两个元素的位置。一次排序过程中,每次都将最大的元素往后冒泡。因此外层循环需要执行 n-1 次,内层循环的终止条件为 n-i-1。
3.2 快速排序
快速排序的代码如下:
void quick_sort(int arr[], int left, int right) {
if (left >= right) {
return;
}
int i = left;
int j = right;
int pivot = arr[left];
while (i < j) {
while (i < j && arr[j] >= pivot) {
j--;
}
arr[i] = arr[j];
while (i < j && arr[i] <= pivot) {
i++;
}
arr[j] = arr[i];
}
arr[i] = pivot;
quick_sort(arr, left, i-1);
quick_sort(arr, i+1, right);
}
该代码中,先取数组中的第一个元素作为基准(pivot)元素,通过两个指针 i 和 j 定位到待排序的区间的左边界和右边界。先从 j 开始向左扫描,直到遇到第一个小于 pivot 的元素,将其交换到 i 的位置,i 向右移动一位。然后从 i 开始向右扫描,直到遇到第一个大于 pivot 的元素,将其交换到 j 的位置,j 向左移动一位。重复以上过程直到 i 和 j 相遇,将基准元素放到该位置上。然后对基准元素左右两边分别进行递归排序。
以上是九大排序算法的完整攻略,具体实现可根据实际情况进行修改和优化。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C语言实现九大排序算法的实例代码 - Python技术站