编写一个c++程序把数组排序
时间: 2024-11-27 15:11:52 浏览: 4
C++提供了多种方法来对数组进行排序,这里展示两种常见的:
1. **冒泡排序**[^1]:
```cpp
#include <iostream>
using namespace std;
int main() {
int arr[] = { 4, 2, 8, 0, 5, 7, 1, 3, 9 };
int n = sizeof(arr) / sizeof(arr[0]);
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - 1 - i; j++) {
if (arr[j] > arr[j + 1]) {
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
for (int i = 0; i < n; i++) {
cout << arr[i] << " ";
}
system("pause");
return 0;
}
```
这个程序通过嵌套循环遍历数组,如果发现当前元素大于下一个元素,则交换它们的位置,重复此过程直到整个数组有序。
2. **归并排序**:
```cpp
void merge_sort(int q[], int l, int r) {
if (l >= r) return;
int mid = l + r >> 1;
merge_sort(q, l, mid);
merge_sort(q, mid + 1, r);
int k = 0, i = l, j = mid + 1;
while (i <= mid && j <= r) {
if (q[i] < q[j]) q[k++] = q[i++];
else q[k++] = q[j++];
}
while (i <= mid) q[k++] = q[i++];
while (j <= r) q[k++] = q[j++];
for (i = l, j = 0; i <= r; i++, j++) {
q[i] = q[j];
}
}
// 示例调用
int arr[] = { 4, 2, 8, 0, 5, 7, 1, 3, 9 };
merge_sort(arr, 0, sizeof(arr) / sizeof(arr[0]) - 1);
```
归并排序采用分治策略,先递归地将数组分成两半,然后合并已排序的部分,直至整个数组有序。
阅读全文