C语言用堆排序及快速排序算法,对待排序记录进行排序并输出排序结果。
时间: 2023-07-06 20:35:51 浏览: 57
好的,我可以帮你解答这个问题。
首先,我需要确认一下你想要对什么类型的数据进行排序,是整数还是其他类型的数据?
假设你想要对一组整数进行排序,那么下面是使用堆排序和快速排序算法对这组数据进行排序的示例代码:
1. 堆排序算法
```c
#include <stdio.h>
// 交换两个数的值
void swap(int* a, int* b) {
int temp = *a;
*a = *b;
*b = temp;
}
// 调整堆
void adjust_heap(int arr[], int i, int size) {
int lchild = 2 * i + 1;
int rchild = 2 * i + 2;
int max = i;
if (lchild < size && arr[lchild] > arr[max]) {
max = lchild;
}
if (rchild < size && arr[rchild] > arr[max]) {
max = rchild;
}
if (max != i) {
swap(&arr[i], &arr[max]);
adjust_heap(arr, max, size);
}
}
// 堆排序
void heap_sort(int arr[], int size) {
int i;
// 建堆
for (i = size / 2 - 1; i >= 0; i--) {
adjust_heap(arr, i, size);
}
// 排序
for (i = size - 1; i >= 1; i--) {
swap(&arr[0], &arr[i]);
adjust_heap(arr, 0, i);
}
}
// 输出数组
void print_arr(int arr[], int size) {
int i;
for (i = 0; i < size; i++) {
printf("%d ", arr[i]);
}
printf("\n");
}
int main() {
int arr[] = { 5, 2, 6, 0, 3, 9, 1, 7, 4, 8 };
int size = sizeof(arr) / sizeof(arr[0]);
printf("Original array:\n");
print_arr(arr, size);
heap_sort(arr, size);
printf("Sorted array:\n");
print_arr(arr, size);
return 0;
}
```
2. 快速排序算法
```c
#include <stdio.h>
// 交换两个数的值
void swap(int* a, int* b) {
int temp = *a;
*a = *b;
*b = temp;
}
// 快速排序
void quick_sort(int arr[], int left, int right) {
if (left >= right) {
return;
}
int pivot = arr[left];
int i = left + 1;
int j = right;
while (1) {
while (i <= right && arr[i] < pivot) {
i++;
}
while (j >= left + 1 && arr[j] > pivot) {
j--;
}
if (i > j) {
break;
}
swap(&arr[i], &arr[j]);
i++;
j--;
}
swap(&arr[left], &arr[j]);
quick_sort(arr, left, j - 1);
quick_sort(arr, j + 1, right);
}
// 输出数组
void print_arr(int arr[], int size) {
int i;
for (i = 0; i < size; i++) {
printf("%d ", arr[i]);
}
printf("\n");
}
int main() {
int arr[] = { 5, 2, 6, 0, 3, 9, 1, 7, 4, 8 };
int size = sizeof(arr) / sizeof(arr[0]);
printf("Original array:\n");
print_arr(arr, size);
quick_sort(arr, 0, size - 1);
printf("Sorted array:\n");
print_arr(arr, size);
return 0;
}
```
希望这些代码对你有所帮助!