C语言实现冒泡选择基数归并排序
时间: 2024-10-11 12:10:53 浏览: 30
C语言实现十大排序算法.rar
在C语言中,冒泡排序是一种简单的排序算法,用于将数组元素从小到大排列。然而,基数排序通常用于非数字类型的数组,如字符串或特定范围内的整数。如果你想对整数数组进行排序,合并排序可能是更合适的选择。
冒泡排序和合并排序结合起来通常是用于混合类型的数据结构,但这并不是标准的合并排序步骤。如果你想要实现经典的合并排序,以下是基本步骤:
```c
void merge_sort(int arr[], int left, int right) {
if (left < right) {
int mid = (left + right) / 2;
merge_sort(arr, left, mid);
merge_sort(arr, mid+1, right);
// 合并两个已排序的部分
int i = left;
int j = mid + 1;
int temp[left+right+1];
while (i <= mid && j <= right) {
if (arr[i] <= arr[j])
temp[i++] = arr[j++];
else
temp[i++] = arr[i++]; // 这里是原始版本,假设递增比较
}
// 将剩余未处理的元素添加到结果
while (i <= mid)
temp[i++] = arr[i];
while (j <= right)
temp[i++] = arr[j];
for (i = left; i <= right; i++)
arr[i] = temp[i];
}
}
// 示例如何调用这个函数
int main() {
int arr[] = {5, 3, 8, 6, 7};
int n = sizeof(arr)/sizeof(arr[0]);
merge_sort(arr, 0, n-1);
// 输出排序后的数组
for (int i=0; i<n; i++)
printf("%d ", arr[i]);
return 0;
}
```
阅读全文