已关闭,此问题需要details or clarity。它目前不接受回答。
**想改善这个问题吗?**通过editing this post添加详细信息并澄清问题。
5天前关闭。
Improve this question
#include <iostream>
void sort(int array[], int size);
int main()
{
int array[] = {10, 1, 9, 2, 8, 3, 7, 4, 6, 5};
int size = sizeof(array)/sizeof(array[0]);
sort(array, size);
for(int element : array){
std::cout << element << " ";
}
return 0;
}
void sort(int array[], int size){
int temp;
for(int i = 0; i < size - 1; i++){
for(int j = 0; j < size - i - 1; j++){
if(array[j] > array[j + 1]){
temp = array[j];
array[j] = array[j+1];
array[j+1] = temp;
}
}
}
}
我现在正在看C++教程,我只是不明白这一部分:
for(int j = 0; j < size - i - 1; j++){
if(array[j] > array[j + 1]){
temp = array[j];
array[j] = array[j+1];
array[j+1] = temp;
有人能解释一下size - i - 1
和j+1
的用途吗?我有点笨,所以我现在不明白。
我试着去理解它,但变得更加困惑。
1条答案
按热度按时间ldioqlga1#
size - i -1
是因为这是冒泡排序的一个实现,并且不需要检查最后一个元素,因为它在之前的循环中“冒泡”到表面,因此处理它只是一个冗余和无用的操作,因此j循环忽略了最后的i-1成员,因为它们总是在正确的位置。同时,
j+1
是因为循环在数组的j位置和下一个位置之间进行检查,以查看哪个更大,因此需要“冒泡”。