matlab中的sort函数怎么用c实现
时间: 2023-12-26 07:04:06 浏览: 175
在C语言中实现类似于Matlab中sort函数的功能,可以使用快速排序(Quick Sort)算法。快速排序是一种常用的排序算法,其时间复杂度为O(NlogN)。
以下是一个用C语言实现快速排序的示例代码:
```c
#include <stdio.h>
void quick_sort(int arr[], int left, int right) {
int i, j, temp, pivot;
if (left < right) {
i = left;
j = right;
pivot = arr[left];
while (i < j) {
while (i < j && arr[j] >= pivot) {
j--;
}
if (i < j) {
arr[i] = arr[j];
i++;
}
while (i < j && arr[i] < pivot) {
i++;
}
if (i < j) {
arr[j] = arr[i];
j--;
}
}
arr[i] = pivot;
quick_sort(arr, left, i - 1);
quick_sort(arr, i + 1, right);
}
}
int main() {
int arr[] = {4, 2, 8, 5, 1, 6, 3, 7};
int len = sizeof(arr) / sizeof(arr[0]);
quick_sort(arr, 0, len - 1);
for (int i = 0; i < len; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
```
在上面的代码中,使用了递归的方式实现快速排序。其中,变量left和right表示待排序数组的左右下标,即初始情况下left=0,right=len-1,其中len为数组长度。pivot表示枢轴元素,即选择数组第一个元素作为枢轴。
在while循环中,i和j两个指针从两端开始扫描数组,如果arr[j]小于pivot,则将其交换到前面,如果arr[i]大于等于pivot,则将其交换到后面,直到i>=j时结束循环。最后将pivot放到正确的位置上,即将pivot赋值给arr[i]。然后,递归地对左右两部分进行排序。
最后,遍历数组输出排序后的结果。
阅读全文