c++ - 排序数组超出大小
问题描述
我编写了这个程序来根据偶数下标按升序对一对数字进行排序。例如; 排序后“1,4,15,3”将是“15,3,1,4”。排序工作正常,但我遇到的问题是内部循环正在比较超出数组大小的元素。它正在与随机数进行比较。我不知道循环应该运行的确切时间(我尝试过 size - 3)。请帮我解决这个错误。这是代码。
#include <iostream>
void ssort(int arr[], int arrSize)
{
int j, k;
bool flag;
do
{
flag = false;
for (int i = 0; i <arrSize; i++) //Runs 10 times
{
if (arr[i+1] > arr[i+3]) //compare the 2nd element with 4th
{
j = arr[i+2]; //j holds 3rd element
k = arr[i+3]; //k holds 4th element
arr[i+2] = arr[i]; //3rd element is now 1st element
arr[i+3] = arr[i+1]; //fourth element is now 2nd element
arr[i] = j; //1st is now 3rd element
arr[i+1] = k; //2nd is now fourth element
flag = true;
}
}
}
while (flag);
}
int main()
{
int arr[10] = {1,5,2,15,10,4,15,23,16,15};
std::cout <<"Unsorted array \n";
for (int i: arr)
{
std::cout <<i <<" ";
}
std::cout <<"\n";
ssort(arr,10);
std::cout <<"Sorted \n";
for (int i: arr)
{
std::cout <<i <<" ";
}
return 0;
}
解决方案
始终牢记检查角落案例。当您向索引添加常量值时,添加不应跨越数组大小-1。添加检查并处理极端情况。
推荐阅读
- maven - 如何处理来自 org.eclipse.pde.core 的构建错误
- javascript - 使用javascript从字符串数组创建一个json
- node.js - 当字符串作为参数传递时,ElasticSearch 2.3 geo_point 字段会引发错误
- java - 引起:java.lang.ClassNotFoundException:org.apache.hbase.thirdparty.com.google.common.cache.CacheLoader
- node.js - 如何防止 $lookup 在 Mongodb 中返回重复值?
- python - python __repr__(self):不返回
- pandas - 如何将组内的 cumsum 反转到带有熊猫的特定行?
- c - 函数只返回不应该达到的返回值
- nginx - 如何在暴露内部域的 NGINX 上运行的 Pagespeed 上进行域重写/映射?
- android - Jetpack compose 中 AlertDialog 的 setOnKeyListener