排序算法是计算机科学中的一项基本技能,特别是在C语言编程中。本文将详细介绍几种常见的C语言排序算法,并通过实战案例帮助读者轻松掌握各种排序技巧。冒泡排序冒泡排序是一种简单的排序算法,它通过重复地走访要...
排序算法是计算机科学中的一项基本技能,特别是在C语言编程中。本文将详细介绍几种常见的C语言排序算法,并通过实战案例帮助读者轻松掌握各种排序技巧。
冒泡排序是一种简单的排序算法,它通过重复地走访要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。
以下是一个使用冒泡排序的C语言程序示例:
#include
void bubbleSort(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[] = {64, 34, 25, 12, 22, 11, 90}; int n = sizeof(arr) / sizeof(arr[0]); bubbleSort(arr, n); printf("Sorted array: \n"); for (int i = 0; i < n; i++) { printf("%d ", arr[i]); } printf("\n"); return 0;
} 选择排序是一种简单直观的排序算法。它的工作原理:首先在未排序序列中找到最小(或最大)元素,存放在序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(或最大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。
以下是一个使用选择排序的C语言程序示例:
#include
void selectionSort(int arr[], int n) { int i, j, min_idx; for (i = 0; i < n - 1; i++) { min_idx = i; for (j = i + 1; j < n; j++) { if (arr[j] < arr[min_idx]) { min_idx = j; } } int temp = arr[min_idx]; arr[min_idx] = arr[i]; arr[i] = temp; }
}
int main() { int arr[] = {64, 34, 25, 12, 22, 11, 90}; int n = sizeof(arr) / sizeof(arr[0]); selectionSort(arr, n); printf("Sorted array: \n"); for (int i = 0; i < n; i++) { printf("%d ", arr[i]); } printf("\n"); return 0;
} 快速排序是一种高效的排序算法,由C.A.R. Hoare在1960年提出。它使用了分治法的一个非常经典的应用。快速排序使用一个分区操作,将一个序列分为两个子序列,一个包含比基准值小的元素,另一个包含比基准值大的元素。
以下是一个使用快速排序的C语言程序示例:
#include
int partition(int arr[], int low, int high) { int pivot = arr[high]; int i = (low - 1); for (int j = low; j <= high - 1; j++) { if (arr[j] < pivot) { i++; int temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } } int temp = arr[i + 1]; arr[i + 1] = arr[high]; arr[high] = temp; return (i + 1);
}
void quickSort(int arr[], int low, int high) { if (low < high) { int pi = partition(arr, low, high); quickSort(arr, low, pi - 1); quickSort(arr, pi + 1, high); }
}
int main() { int arr[] = {10, 7, 8, 9, 1, 5}; int n = sizeof(arr) / sizeof(arr[0]); quickSort(arr, 0, n - 1); printf("Sorted array: \n"); for (int i = 0; i < n; i++) { printf("%d ", arr[i]); } printf("\n"); return 0;
} 本文介绍了C语言中几种常见的排序算法,并通过实际案例展示了它们的实现过程。希望读者能够通过这些示例,轻松掌握各种排序技巧,并在实际编程中灵活运用。