c++ - 我在此选择排序的逻辑中找不到错误。它以相同的顺序打印出默认数组
问题描述
int arr[] = {22, 0, 45, 32, 12, 78, 89};
int size= sizeof(arr)/sizeof(arr[0]);
cout << size << endl;
int temp =arr[0];
临时变量没有返回新的更新数组成员;它返回默认数组,而不是按升序排列的新排序数组。
for (int i=0; i<size; i++) {
int temp = arr[i];
for (int j=i+1; j<size; j++) {
if (temp > arr[j]) {
temp=arr[j];
}
}
arr[i]=temp;
cout << arr[i] << endl;
}
}
解决方案
'''
int arr[]={22,0,45,32,12,78,89};
int size= sizeof(arr)/sizeof(arr[0]);
cout<<size<<endl;
for(int i=0;i<size;i++){
int temp =arr[i];
''' 内部循环临时值将被交换,因此较旧的比较值不会重复。''' for(int j=i+1 ; j<size-1;j++){
if (temp>arr[j]){
temp=arr[j];
arr[j]=arr[i];
arr[i]=temp;
}
}
cout<<arr[i]<<endl;
}
}
'''
推荐阅读
- c# - 使用 OpenTK 在 SkiaSharp 中创建模板附件时出错
- html - 这个 css 选择器有一个简短的形式吗
- html - 下拉值在 Windows 上不可见
- reactjs - 使用 React Navigation 在 Stacknavigator 中使用 hoc 包裹屏幕
- c# - 为什么 if(dynamic && string) 会编译?
- android - findFirstAsync() 返回“无效对象”,但 findFirst() 或 findAllAsync() 有效
- c# - 使用 POS .Net 使用 datalogic heron HD3430 扫描仪捕获图像
- java - 是否可以在 Hashmap 中获取先前存储的值?
- javascript - 如何使用正则表达式返回查询参数?
- c# - 如何将使用半列拆分数据的文本文件解析为数据表