用c语言对数组进行排序分为三部分,负数在前,0在中间,正数在后
时间: 2023-05-17 19:04:59 浏览: 190
可以使用快速排序算法来对数组进行排序,具体步骤如下:
1. 首先定义三个指针,分别指向数组的起始位置、中间位置和末尾位置。
2. 从起始位置开始遍历数组,如果当前元素小于0,则将其与起始位置的元素交换,并将起始位置指针向后移动一位。
3. 从中间位置开始遍历数组,如果当前元素等于0,则将其与中间位置的元素交换,并将中间位置指针向后移动一位。
4. 从末尾位置开始遍历数组,如果当前元素大于0,则将其与末尾位置的元素交换,并将末尾位置指针向前移动一位。
5. 重复以上步骤,直到起始位置指针大于等于中间位置指针或者中间位置指针大于等于末尾位置指针。
6. 最后得到的数组就是按照要求排序后的结果。
以下是示例代码:
void quick_sort(int arr[], int left, int right) {
if (left >= right) return;
int i = left, j = right, pivot = arr[left];
while (i < j) {
while (i < j && arr[j] >= pivot) j--;
arr[i] = arr[j];
while (i < j && arr[i] < pivot) i++;
arr[j] = arr[i];
}
arr[i] = pivot;
quick_sort(arr, left, i - 1);
quick_sort(arr, i + 1, right);
}
void sort_array(int arr[], int len) {
int i, j, k;
for (i = 0, j = 0, k = len - 1; j <= k;) {
if (arr[j] < 0) {
int tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
i++;
j++;
} else if (arr[j] == 0) {
j++;
} else {
int tmp = arr[j];
arr[j] = arr[k];
arr[k] = tmp;
k--;
}
}
quick_sort(arr, 0, i - 1);
quick_sort(arr, k + 1, len - 1);
}
注意:以上代码只是一个示例,实际应用中需要根据具体情况进行修改和优化。
阅读全文