n个数存放在数组中, 然后去掉大于10的数据,从小到大的排序C++
#include <iostream>
using namespace std;
int main() {
int n, num;
cin >> n; // 输入数组长度
int arr[n]; // 定义数组
for (int i = 0; i < n; i++) {
cin >> num; // 输入第i个数
if (num > 10) continue; // 如果大于10则跳过
arr[i] = num; // 否则将该数存入数组中
}
sort(arr, arr + n); // 对数组进行排序
for (int i = 0; i < n; i++) {
cout << arr[i] << " "; // 输出排序后的数组元素
}
return 0;
}
#include <iostream>
int sort(int* arr, int n) {
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - i - 1; 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++) {
if (arr[i] > 10) {
return i;
}
}
return n;
}
int main()
{
cin >> n;
int arr[n];
for (int i = 0; i < n; i++) {
cin >> arr[i];
}
int x = sort(arr, n);
for (int i = 0; i < x; i++)
cout << arr[i] << " ";
return 0;
}
/**
*功能:拆分有序的序列两两排序-拆解结束的条件 子序列长度为1的时候
*/
void sortArr(int arr[], int low, int hight) {
if (low < hight) {
int mid = (hight + low) / 2;
sortArr(arr,low,mid);// 递归拆解左边的序列
sortArr(arr, mid + 1, hight);// 递归拆解左边的序列
mergeArr(arr, low, mid, hight);// 将两个有序的子序列(arr[low至mid]、arr[mid+1至hight] 排序合并成一个新的有序列
}
}
实际上当他们拆分成1个有序的子序列的时候才开始调用mergeArr 进行排序 合并 然后得到新的有序的序列(长度为2)然后返回上一层得再进行排序
要实现对数组中的数字进行排序并去掉大于10的数据,可以按照以下步骤进行:
void selectionSort(int arr[], int n)
{
for (int i = 0; i < n-1; i++)
{
int minIndex = i;
for (int j = i+1; j < n; j++)
if (arr[j] < arr[minIndex])
minIndex = j;
swap(arr[minIndex], arr[i]);
}
}
for (int i = 0; i < n; i++)
{
if (arr[i] > 10)
arr[i] = -1;
}
for (int i = 0; i < n; i++)
{
if (arr[i] != -1)
cout << arr[i] << " ";
}
将以上步骤整合到一起,就可以实现对数组中的数字进行排序并去掉大于10的数据的需求。
完整代码示例:
#include <iostream>
using namespace std;
void selectionSort(int arr[], int n)
{
for (int i = 0; i < n-1; i++)
{
int minIndex = i;
for (int j = i+1; j < n; j++)
if (arr[j] < arr[minIndex])
minIndex = j;
swap(arr[minIndex], arr[i]);
}
}
int main()
{
int n;
cout << "请输入数组的长度:";
cin >> n;
int arr[n];
cout << "请输入数组的元素:";
for (int i = 0; i < n; i++)
cin >> arr[i];
selectionSort(arr, n);
for (int i = 0; i < n; i++)
{
if (arr[i] > 10)
arr[i] = -1;
}
cout << "排序并去除大于10的数字的结果为:";
for (int i = 0; i < n; i++)
{
if (arr[i] != -1)
cout << arr[i] << " ";
}
return 0;
}
请注意,以上代码是基于C++的标准库而言,编译运行时需要确保编译环境正常,并按照上述步骤进行操作。