c语言从小到大排序编程(c语言数组从小到大排序编程)

冒泡排序

冒泡排序是一种简单直观的排序算法,它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误,就交换它们。

具体实现冒泡排序的C语言代码如下:

```c
#include

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;
}
}
}
}

int main() {
int arr[] = {64, 34, 25, 12, 22, 11, 90};
int n = sizeof(arr) / sizeof(arr[0]);
bubbleSort(arr, n);
printf("排序后的数组:\n");
for (int i = 0; i < n; i++) { printf("%d ", arr[i]); } return 0;}```

以上代码中,使用了两层嵌套的循环,外层循环控制每一轮比较的次数,内层循环用于比较并交换元素。冒泡排序的时间复杂度为O(n2),不适用于大规模数据的排序。

选择排序

选择排序是一种简单直观的排序算法,它的原理是每次从待排序的数据中选择最小(或最大)的一个元素,放到已排好序的数据的末尾。

以下是使用C语言实现选择排序的代码:

```c
#include

void selectionSort(int arr[], int n) {
int i, j, minIndex, temp;
for (i = 0; i < n - 1; i++) { minIndex = i; for (j = i + 1; j < n; j++) { if (arr[j] < arr[minIndex]) { minIndex = j; } } temp = arr[minIndex]; arr[minIndex] = 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("排序后的数组:\n"); for (int i = 0; i < n; i++) { printf("%d ", arr[i]); } return 0;}```

选择排序也使用了两层嵌套的循环,外层循环从头到尾扫描每一个元素,内层循环从当前元素的下一个位置起扫描,找到最小元素的索引,并与当前元素交换位置。选择排序的时间复杂度同样为O(n2),不适用于大规模数据的排序。

快速排序

快速排序是一种高效的排序算法,采用递归的方法,将数据分成两个独立的部分,然后对这两个部分分别进行排序。

以下是使用C语言实现快速排序的代码:

```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[] = {64, 34, 25, 12, 22, 11, 90}; int n = sizeof(arr) / sizeof(arr[0]); quickSort(arr, 0, n - 1); printf("排序后的数组:\n"); for (int i = 0; i < n; i++) { printf("%d ", arr[i]); } return 0;}```

以上代码中,首先选择一个枢纽元素(一般是数组中的最后一个元素),然后将整个数组分成两个部分,一部分小于枢纽元素,一部分大于枢纽元素。然后分别对这两个部分进行递归调用,直到排序完成。快速排序的平均时间复杂度为O(nlogn),适用于大规模数据的排序。

本文来自投稿,不代表亲测学习网立场,如若转载,请注明出处:https://www.qince.net/cyuyan2m-4.html

郑重声明:

本站所有内容均由互联网收集整理、网友上传,并且以计算机技术研究交流为目的,仅供大家参考、学习,不存在任何商业目的与商业用途。 若您需要商业运营或用于其他商业活动,请您购买正版授权并合法使用。

我们不承担任何技术及版权问题,且不对任何资源负法律责任。

如遇到资源无法下载,请点击这里失效报错。失效报错提交后记得查看你的留言信息,24小时之内反馈信息。

如有侵犯您的版权,请给我们私信,我们会尽快处理,并诚恳的向你道歉!

(0)
上一篇 2023年7月31日 下午8:32
下一篇 2023年7月31日 下午8:33

猜你喜欢