//***********************************************************
///*by Nicole 11/2017
//***********************************************************
#include<iostream>
#include<vector>
using namespace std;
//bubble sort//第一次浮上来最小的,第二次浮上来次小的`````
vector<int> bubble_(vector<int> &a ){
int n=a.size();
int temp=0;
for(int i=0;i<n;i++){
for(int j=n-1;j>i;j--){
if(a[j]<a[j-1]){
temp=a[j];
a[j]=a[j-1];
a[j-1]=temp;
}
}
cout<<"第"<<i+1<<"层:";
for(int m=0;m<n;m++){
cout<<a[m]<<" ";
}
cout<<endl;
cout<<"********************************************************"<<endl;
}
return a;
}
//choose sort//第一次选择最小的数放前面,第二次选择次小的数放第二位`````
vector<int> choose_(vector<int> &a ){
int n=a.size();
int temp=0;
for(int i=0;i<n;i++){
int k=i;
for(int j=i+1;j<n;j++){
if(a[j]<a[k])
k=j; //每次寻找次小的值,替换
}
if(k!=i){
temp=a[k];
a[k]=a[i];
a[i]=temp;
}
cout<<"第"<<i+1<<"位数确定:";
for(int o=0;o<n;o++)
cout<<a[o]<<" ";
cout<<endl;
}
return a;
}
//insert sort//看作一开始只有一个数,第一次插入第一个数(此时两个数排好序),
//第二次插入第二个数到合适的位置(三个数排好序)```````
vector<int> insert_(vector<int> &a){
int n=a.size();
int temp=0;
for(int i=1;i<n;i++){
for(int j=i;j>0;j--){
if(a[j]<a[j-1]){
temp=a[j];
a[j]=a[j-1];
a[j-1]=temp;
}
}
cout<<i<<"个数插入:";
for(int o=0;o<n;o++)
cout<<a[o]<<" ";
cout<<endl;
cout<<"******************************************************";
cout<<endl;
}
return a;
}
//quick sort 分治法
void quick_(vector<int> &a,int l,int r){
int n=a.size();
if (l < r){
int i = l, j = r, x = a[l];
while (i < j){
while(i < j && a[j] >= x) // 从右向左找第一个小于x的数
j--;
if(i < j)
a[i++] = a[j];
while(i < j && a[i] < x) // 从左向右找第一个大于等于x的数
i++;
if(i < j)
a[j--] = a[i];
}
a[i] = x;
quick_(a, l, i - 1); // 递归调用
for(int m=0;m<n;m++)
cout<<a[m]<<" ";
cout<<endl;
quick_(a, i + 1, r);
}
}
void main()
{
int a[10]={10,4,3,2,1,5,6,8,7,9};
vector<int> b(a,a+10);
quick_(b,0,9);
while(1);
}
排序之冒泡 选择 插入 快速(c++)
最新推荐文章于 2022-09-21 12:58:15 发布