正常的冒泡排序和选择排序是这样的
#include<iostream>
using namespace std;
int main() {
int arr[] = { 3,24,8,23,1,9,10,56,42,6,17 };
int size = sizeof(arr) / sizeof(arr[0]);
//冒泡排序
for (int i = 0; i < size; i++){
for (int j = 0; j < size - i - 1; j++) {
if (arr[j + 1] < arr[j]) {
int temp = arr[j ];
arr[j ] = arr[j+1];
arr[j+1] = temp;
}
}
}
for (int num : arr) {
cout << num << endl;
}
cout<<"=================================" << endl;
//选择排序
for (int i = 0; i < size; i++)
{
for (int j = i + 1; j < size; j++) {
if (arr[j] < arr[i]) {
int temp = arr[j];
arr[j] = arr[i];
arr[i] = temp;
}
}
}
for (int num : arr) {
cout << num << endl;
}
}
改动一下,循环一次直接输出当前数组的最大值和最小值
冒泡排序。
int a;
int arr[] = { 3,24,8,23,1,9,10,56,42,6,17 };
int size = sizeof(arr) / sizeof(arr[0]);
for (int j = 0; j < size - 1; j++) {
//循环一次,>号 把最小的放到最后一个
//循环一次,<号 把最大的放到最后一个
if (arr[j + 1] < arr[j]) {
int temp = arr[j ];
arr[j ] = arr[j+1];
arr[j+1] = temp;
}
//冒泡排序针对把最大或者最小的数往最后一个下标移动。所以打印 size-1
a = arr[size-1];
}
cout<<a<<endl;
选择排序
int b;
int arr[] = { 3,24,8,23,1,9,10,56,42,6,17 };
int size = sizeof(arr) / sizeof(arr[0]);
for (int j = 1 ; j < size; j++) {
//循环一次,>号 把最大的放到最后一个
//循环一次,<号 把最小的放到最后一个
if (arr[j] > arr[0]) { //>--56 <--1
int temp = arr[j];
arr[j] = arr[0];
arr[0] = temp;
}
//选择排序针对把最大或者最小的数往第一个下标移动。所以打印 0
b = arr[0];
}
cout << b << endl;