思路介绍:
选择排序和冒泡排序都是都是逐个去确定每个位置上的元素
不同的是选择排序是待确定位置的元素与其后面的元素进行判断、交换,从而让该位置的元素确定下来
而冒泡排序是让数组里的元素挨个与其后面的元素进行判断、交换,从而让最值被推向数组的两端,并确定下来。
选择排序代码:
#include<iostream>
#include<ctime>
#include<cstdlib>
#include<vector>
using namespace std;
int main(){
srand(time(0));
vector<int> arr(10);
for(int i = 0;i < arr.size();i++){
arr[i] = rand()%(20+1);
cout<<arr[i]<<" ";
}
cout<<endl;
for(int i = 0;i < arr.size();i++)
for(int j = i+1;j < arr.size();j++){
if(arr[j] < arr[i]){
arr[i] += arr[j];
arr[j] = arr[i] - arr[j];
arr[i] -= arr[j];
}
}
for(int i = 0;i < arr.size();i++)
cout<<arr[i]<<" ";
return 0;
}
冒泡排序代码:
#include<iostream>
#include<ctime>
#include<cstdlib>
#include<vector>
using namespace std;
int main(){
srand(time(0));
vector<int> arr(10);
for(int i = 0;i < arr.size();i++){
arr[i] = rand()%(20+1);
cout<<arr[i]<<" ";
}
cout<<endl;
for(int i=0,k=arr.size()-1;i < k;i++)
for(int j = k;j > i;j--){
if(arr[j] < arr[j-1]){
arr[j] += arr[j-1];
arr[j-1] = arr[j] - arr[j-1];
arr[j] -= arr[j-1];
}
}
for(int i = 0;i < arr.size();i++)
cout<<arr[i]<<" ";
return 0;
}