c数组从小到大排序方法
时间: 2023-09-02 09:03:26 浏览: 268
C数组从小到大排序的方法有多种,下面列举了两种常用的排序算法:
一、冒泡排序(Bubble Sort):
1. 遍历数组,比较相邻两个元素的大小,如果前面的元素大于后面的元素,则交换它们的位置;
2. 重复上述过程,直到没有需要交换的元素;
3. 每一轮遍历都会将最大的元素移动到数组的最后一个位置;
4. 通过n-1轮的遍历,就可以将整个数组从小到大排序。
二、快速排序(Quick Sort):
1. 选择一个基准值,通常是数组中的中间元素;
2. 将数组按照基准值分为两部分,一部分是大于基准值的元素,另一部分是小于等于基准值的元素;
3. 递归地对分割后的两部分进行快速排序;
4. 最终将两部分合并起来,就得到了一个从小到大排序的数组。
这两种排序方法都可以实现对C数组的从小到大排序,但是它们的时间复杂度和具体实现方式略有不同。冒泡排序的时间复杂度为O(n^2),而快速排序的时间复杂度为O(nlogn)。一般来说,对于较小的数据集,冒泡排序更为简单,而对于较大的数据集,快速排序更为高效。
相关问题
c语言数组从小到大排序
以下是使用冒泡排序法对整型数组从小到大排序的C语言代码:
```c
#include <stdio.h>
void bubble_sort(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[] = {5, 2, 8, 3, 1, 9, 4, 6, 7};
int n = sizeof(arr) / sizeof(arr[0]);
int i;
printf("Original array: ");
for (i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
bubble_sort(arr, n);
printf("Sorted array: ");
for (i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
```
运行结果:
```
Original array: 5 2 8 3 1 9 4 6 7
Sorted array: 1 2 3 4 5 6 7 8 9
```
c语言二维数组从小到大排序
以下是两种C语言二维数组从小到大排序的例子:
1. 将二维数组的每一行进行从小到大的排序:
```c
#include <stdio.h>
int main() {
int a[3][4] = {{3,2,1,5},{6,5,4,3},{6,4,3,7}}, i, j, t, s;
for (i = 0; i < 3; i++) { // 行数
for (j = 0; j < 4 - 1; j++) { // 列数
for (s = j + 1; s < 4; s++) { // 上面的a[i][j]被固定,让固定的a[i][j]和a[i][s]比较,s每一行j后面的元素
if (a[i][j] > a[i][s]) {
t = a[i][j];
a[i][j] = a[i][s];
a[i][s] = t;
}
}
}
}
for (i = 0; i < 3; i++) {
for (j = 0; j < 4; j++) {
printf("%-3d", a[i][j]);
}
printf("\n");
}
return 0;
}
```
2. 将二维数组的每一列进行从小到大的排序:
```c
#include <stdio.h>
int main() {
int a[3][4] = { {1,12,2,11}, {3,10,4,9}, {5,8,6,7} }, i, j, q, temp;
for (i = 0; i <= 3; i++) { // 冒泡排序行
for (j = 0; j < 4 - 1; j++) { // 冒泡排序每行进行排序
for (q = 0; q < 4 - j - 1; q++) {
if (a[q][i] > a[q + 1][i]) {
temp = a[q + 1][i];
a[q + 1][i] = a[q][i];
a[q][i] = temp;
}
}
}
}
for (i = 0; i < 3; i++) { // 输出
for (j = 0; j < 4; j++) {
printf("%5d", a[i][j]);
}
putchar('\n');
}
return 0;
}
```