编写代码用c语言实现数组的相对排序
时间: 2023-05-23 19:01:46 浏览: 89
c语言实现排序算法
5星 · 资源好评率100%
好的,可以。相对排序指的是调整数组中的元素,使得数组中所有的奇数在前面,所有的偶数在后面,并且奇数和偶数内部也是有相对顺序的。以下是代码实现:
#include <stdio.h>
void relativeSortArray(int* arr, int arrSize){
int odd[arrSize]; // 存放奇数
int even[arrSize]; // 存放偶数
int oddIndex = 0;
int evenIndex = 0;
// 分别将奇数和偶数存入对应数组中
for (int i = 0; i < arrSize; i++) {
if (arr[i] % 2 == 1) {
odd[oddIndex++] = arr[i];
} else {
even[evenIndex++] = arr[i];
}
}
// 对奇数数组进行冒泡排序,使得奇数内部有相对顺序
for (int i = 0; i < oddIndex - 1; i++) {
for (int j = 0; j < oddIndex - i - 1; j++) {
if (odd[j] > odd[j + 1]) {
int temp = odd[j];
odd[j] = odd[j + 1];
odd[j + 1] = temp;
}
}
}
// 对原数组进行修改,将奇数数组和偶数数组的元素按相对顺序放入
int index = 0;
for (int i = 0; i < oddIndex; i++) {
arr[index++] = odd[i];
}
for (int i = 0; i < evenIndex; i++) {
arr[index++] = even[i];
}
}
int main() {
int arr[] = {3, 1, 4, 2, 5, 7, 6};
int arrSize = sizeof(arr) / sizeof(arr[0]);
printf("Original array: ");
for (int i = 0; i < arrSize; i++) {
printf("%d ", arr[i]);
}
relativeSortArray(arr, arrSize);
printf("\nRelative sorted array: ");
for (int i = 0; i < arrSize; i++) {
printf("%d ", arr[i]);
}
return 0;
}
阅读全文