admin 管理员组文章数量: 887021
2024年2月19日发(作者:cp命令复制文件夹)
排序c语言代码
一、排序算法简介
排序算法是计算机科学中一个重要的基础问题,主要用于将一组元素按照特定的顺序重新排列。在C语言中,有多种排序算法可以选择,每种算法都有其特点和适用场景。
二、冒泡排序
冒泡排序是一种基本的排序算法,它的原理是比较相邻的两个元素,如果顺序错误则交换它们,直到整个数组排好序为止。以下是冒泡排序的C语言代码:
void bubbleSort(int arr[], int n) {
int i, j;
for (i = 0; i < n-1; i++) {
for (j = 0; j < n-i-1; j++) {
if (arr[j] > arr[j+1]) {
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
}
三、插入排序
插入排序是一种简单直观的排序算法,它的原理是将未排序的元素逐个插入到已排序的序列中。以下是插入排序的C语言代码:
void insertionSort(int arr[], int n) {
int i, j, key;
for (i = 1; i < n; i++) {
key = arr[i];
j = i - 1;
while (j >= 0 && arr[j] > key) {
arr[j+1] = arr[j];
j = j - 1;
}
arr[j+1] = key;
}
}
四、选择排序
选择排序是一种简单直观的排序算法,它的原理是每次从待排序的序列中选择最小(或最大)的元素,放到已排序的序列的末尾。以下是选择排序的C语言代码:
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;
}
}
五、快速排序
快速排序是一种常用的排序算法,它的原理是选择一个基准元素,将比基准小的元素放到左边,将比基准大的元素放到右边,然后对左右两个子序列进行递归排序。以下是快速排序的C语言代码:
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 partition(int arr[], int low, int high) {
int pivot = arr[high];
int i = low - 1;
int j;
for (j = low; j < high; j++) {
if (arr[j] < pivot) {
i++;
swap(&arr[i], &arr[j]);
}
}
swap(&arr[i+1], &arr[high]);
return i+1;
}
void swap(int* a, int* b) {
int t = *a;
*a = *b;
*b = t;
}
六、归并排序
归并排序是一种高效的排序算法,它的原理是将待排序的序列分成两个子序列,分别进行排序,然后将两个排序好的子序列合并成一个有序序列。以下是归并排序的C语言代码:
void merge(int arr[], int left, int mid, int right) {
int i, j, k;
int n1 = mid - left + 1;
int n2 = right - mid;
int L[n1], R[n2];
for (i = 0; i < n1; i++) {
L[i] = arr[left + i];
}
for (j = 0; j < n2; j++) {
R[j] = arr[mid + 1 + j];
}
i = 0;
j = 0;
k = left;
while (i < n1 && j < n2) {
if (L[i] <= R[j]) {
arr[k] = L[i];
i++;
}
else {
arr[k] = R[j];
j++;
}
k++;
}
while (i < n1) {
arr[k] = L[i];
i++;
k++;
}
while (j < n2) {
arr[k] = R[j];
j++;
k++;
}
}
void mergeSort(int arr[], int left, int right) {
if (left < right) {
int mid = left + (right - left) / 2;
mergeSort(arr, left, mid);
mergeSort(arr, mid + 1, right);
merge(arr, left, mid, right);
}
}
七、总结
本文介绍了一些常用的排序算法,在C语言中的实现代码。这些排序算法各有优缺点,适用于不同的场景。学习和掌握这些算法,可以帮助我们更好地理解计算机科学中的排序问题,并能够根据具体情况选择合适的算法来提高代码的效率。通过实践和不断的学习,我们可以进一步深入了解排序算法的原理和优化方法,提升自己的编程能力。
版权声明:本文标题:排序c语言代码 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1708318936h519538.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论