用c++写一个排序代码
时间: 2024-05-12 21:16:49 浏览: 3
好的,以下是一个简单的冒泡排序 C 代码:
```c
#include <stdio.h>
void bubbleSort(int arr[], int n) {
int i, j, temp;
for (i = 0; i < n; i++) {
for (j = 0; j < n - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
int main() {
int arr[] = {5, 1, 4, 2, 8};
int n = sizeof(arr) / sizeof(arr[0]);
bubbleSort(arr, n);
printf("排序后的数组:\n");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
return 0;
}
```
这个代码使用冒泡排序对数组进行排序。在主函数中,初始化一个整型数组,并计算数组的长度。然后调用排序函数来排序这个数组并输出排序后的结果。
相关问题
用C++写一个堆排序代码
好的,以下是用 C++ 写的堆排序代码:
```cpp
#include <iostream>
#include <vector>
using namespace std;
// 调整堆
void adjustHeap(vector<int>& nums, int root, int len) {
int left = 2 * root + 1; // 左子节点
int right = 2 * root + 2; // 右子节点
int maxIdx = root; // 最大值下标
if (left < len && nums[left] > nums[maxIdx]) {
maxIdx = left;
}
if (right < len && nums[right] > nums[maxIdx]) {
maxIdx = right;
}
if (maxIdx != root) {
swap(nums[root], nums[maxIdx]);
adjustHeap(nums, maxIdx, len);
}
}
// 堆排序
void heapSort(vector<int>& nums) {
int len = nums.size();
// 构建大根堆
for (int i = len / 2 - 1; i >= 0; i--) {
adjustHeap(nums, i, len);
}
// 排序
for (int i = len - 1; i >= 0; i--) {
swap(nums[0], nums[i]);
adjustHeap(nums, 0, i);
}
}
int main() {
vector<int> nums = { 5, 2, 8, 3, 9, 4, 1, 7 };
heapSort(nums);
for (auto num : nums) {
cout << num << " ";
}
cout << endl;
return 0;
}
```
以上代码实现了堆排序,主要包含两个函数:`adjustHeap` 和 `heapSort`。
`adjustHeap` 函数用于调整堆,其中 `root` 参数表示当前节点的下标,`len` 参数表示堆的长度。该函数会将以 `root` 为根节点的子树调整为大根堆。
`heapSort` 函数用于堆排序,其中先构建大根堆,然后从后往前遍历数组,每次将第一个元素(即堆的根节点)与当前位置的元素交换,并调整堆。最终得到的数组就是排好序的。
用c++写一个冒泡排序代码
以下是用C语言写的冒泡排序代码:
```
#include <stdio.h>
void bubble_sort(int arr[], int n) {
int i, j, temp;
for (i = 0; i < n-1; i++) {
for (j = 0; j < n-i-1; j++) {
if (arr[j] > arr[j+1]) {
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
}
int main() {
int arr[] = {5, 1, 9, 3, 7};
int n = sizeof(arr)/sizeof(arr[0]);
int i;
printf("Before sorting: ");
for (i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
bubble_sort(arr, n);
printf("After sorting: ");
for (i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
```
运行结果:
```
Before sorting: 5 1 9 3 7
After sorting: 1 3 5 7 9
```
在这个例子中,我们定义了一个函数`bubble_sort`用于实现冒泡排序。这个函数接受两个参数:一个整数数组和数组的长度。在函数中,我们使用两个嵌套的循环来遍历数组,并对相邻的元素进行比较和交换操作,直到整个数组都被排序。最后,我们在`main`函数中调用`bubble_sort`函数,并打印出排序前和排序后的数组。