gpt4 book ai didi

c++ - 冒泡排序优化 C++

转载 作者:搜寻专家 更新时间:2023-10-30 23:59:39 26 4
gpt4 key购买 nike

我只是稍微练习一下,并尝试使用冒泡排序算法对数组进行排序。编译器没有给我任何警告或错误,而且运行良好!首先,您键入一个数字 10 次,然后程序对它们进行排序并打印出来。

代码:

#include <iostream>
using namespace std;

void arr_sort(int* array, const int arr_size){

int temp = 0; //Temporary integer to store (if necessary) the current element
int end = 0; //Run time condition

while(end++ != arr_size){ // Will loop max. 10 times

for(int i = 0; i < arr_size; i++){

if(array[i] > array[i + 1]){ //If the current element
temp = array[i]; //is bigger than the next

array[i] = array[i + 1];//Change the positions
array[i + 1] = temp;
}
}
}

}

int main(){

int arr_input[10];

for(int i = 0; i < 10;i++) //The user has to type 10 numbers
cin >> arr_input[i]; //which will be stored in this array

arr_sort(arr_input, 10); //sorts the array

cout << endl << endl;

for(int i = 0; i < 10; i++) //Print out the array!
cout << arr_input[i] << ", ";
cout << endl;

return 0;
}

我唯一的问题是 arr_sort 函数中的 while 循环。我的意思是它对数组进行排序,直到 end 具有与 arr_size 相同的值。但通常不需要那么长时间。我现在的问题是......我该如何改进这个功能?我如何测试数组是否已完全排序,以便 while 循环可以停止而无需再运行一次又一次......?

最佳答案

在您的 for 循环之前,假设它已排序:

bool sorted = true;

在您的 if 语句中,记录它未排序:

sorted = false;

在您的 for 循环` 之后,如果没有证据表明它未排序则返回:

if ( sorted ) return;

关于c++ - 冒泡排序优化 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15527239/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com