c++sort和数组同时大到小和小到大
时间: 2024-02-11 10:08:04 浏览: 26
c++中的sort函数可以通过传递自定义的比较函数来实现数组的升序排列和降序排列。下面是一个示例代码,可以将数组同时按照从小到大和从大到小排序:
```cpp
#include <iostream>
#include <algorithm>
using namespace std;
bool cmp(int a, int b) {
// 比较函数,实现从大到小排序
return a > b;
}
int main() {
int a[] = {5, 2, 8, 4, 1};
int n = sizeof(a) / sizeof(a[0]);
// 从小到大排序
sort(a, a + n);
for (int i = 0; i < n; i++) {
cout << a[i] << " ";
}
cout << endl;
// 从大到小排序
sort(a, a + n, cmp);
for (int i = 0; i < n; i++) {
cout << a[i] << " ";
}
cout << endl;
return 0;
}
```
在上面的代码中,sort函数第三个参数为自定义的比较函数cmp,实现从大到小排序。如果不传递第三个参数,则默认从小到大排序。
相关问题
用dev c++任务四:写一个函数,对数组进行由大到小的排序。
好的,下面是代码实现:
```c++
#include <stdio.h>
void sort(int arr[], int size) {
for(int i = 0; i < size - 1; i++) {
for(int j = i + 1; j < size; j++) {
if(arr[i] < arr[j]) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
}
int main() {
int arr[] = {10, 7, 3, 6, 8, 4};
int size = sizeof(arr)/sizeof(arr[0]);
printf("Before sorting: ");
for(int i = 0; i < size; i++) {
printf("%d ", arr[i]);
}
sort(arr, size);
printf("\nAfter sorting: ");
for(int i = 0; i < size; i++) {
printf("%d ", arr[i]);
}
return 0;
}
```
这个程序中,我们定义了一个 `sort` 函数,它接受一个整数数组和数组的大小作为参数,然后使用两个嵌套的循环进行排序。在排序的过程中,我们使用一个临时变量来交换数组元素的位置,以实现由大到小的排序。最后,我们在 `main` 函数中定义了一个整数数组,对其进行排序,并输出排序前后的数组元素。
C语言使用sort对数组中的前n个元素从小到大排序的代码
C语言中并没有 `sort()` 函数,不过您可以使用 C++ 的 `sort()` 函数进行排序,具体代码如下:
```cpp
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
int n;
cin >> n;
int arr[n];
for (int i = 0; i < n; i++) {
cin >> arr[i];
}
sort(arr, arr + n); // 排序
for (int i = 0; i < n; i++) {
cout << arr[i] << " ";
}
return 0;
}
```
在这个代码中,我们先输入了数组的长度 `n` 和数组的元素。然后使用 `sort()` 函数对数组进行排序,最后输出排序后的结果。由于使用了 C++ 的库函数,因此需要将文件的扩展名从 `.c` 改为 `.cpp`。