首页 > 解决方案 > 我在此选择排序的逻辑中找不到错误。它以相同的顺序打印出默认数组

问题描述

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;
}
} 

标签: c++sorting

解决方案


'''

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;
}
}

'''


推荐阅读