插入排序:
就像摸牌,摸一张插进去,找一个哨兵,从第二个开始,和前一个比较,小的话前移一位。
- #include <iostream>
- #include<stdlib.h>
- using namespace std;
- #define N 4 //不能加分号结束
- class sort
- {
- public:
- void insertSort(int a[],int n);
- sort()
- {
- cout<<"Start"<<endl;
- }
- sort(const sort&s);
- private:
- };
- void sort::insertSort(int a[],int n)
- {
- int i=1,j=0,key;//设两个变量值的目的是内外变化,如果只有一个内外的变化会产生影响
- while(i<n) //外循环
- {
- key=a[i];//把第几个拿出来,和前边的对比;
- j=i-1; //前边的那个值
- while(key<a[j]&&j>=0) //内循环
- {
- a[j+1]=a[j]; //把当前值改成前一个值
- j--; //位置前移一位
- }
- a[j+1]=key; //比较成功之后,把哨兵插到当前位置,注意用的是j
- i++; //转到下次循环
- }
- cout<<"-----------\n ";
- for(int i=0;i<n;i++)
- {
- cout<<a[i];
- }
- }
- sort::sort(const sort&s)
- {
- cout<<"news\n";
- }
- int main()
- {
- sort s;
- //sort b=s;
- int a[N];
- cout<<"lease input arr.";
- for(int i=0;i<N;i++)
- {
- cin>>a[i];
- }
- cout<<"shuchu wei";
- for(int i=0;i<N;i++)
- {
- cout<<a[i]<<endl;
- }
- s.insertSort(a,N);
- return 0;
- };
#include <iostream>
#include<stdlib.h>
using namespace std;
#define N 4 //不能加分号结束
class sort
{
public:
void insertSort(int a[],int n);
sort()
{
cout<<"Start"<<endl;
}
sort(const sort&s);
private:
};
void sort::insertSort(int a[],int n)
{
int i=1,j=0,key;//设两个变量值的目的是内外变化,如果只有一个内外的变化会产生影响
while(i<n) //外循环
{
key=a[i];//把第几个拿出来,和前边的对比;
j=i-1; //前边的那个值
while(key<a[j]&&j>=0) //内循环
{
a[j+1]=a[j]; //把当前值改成前一个值
j--; //位置前移一位
}
a[j+1]=key; //比较成功之后,把哨兵插到当前位置,注意用的是j
i++; //转到下次循环
}
cout<<"-----------\n ";
for(int i=0;i<n;i++)
{
cout<<a[i];
}
}
sort::sort(const sort&s)
{
cout<<"news\n";
}
int main()
{
sort s;
//sort b=s;
int a[N];
cout<<"lease input arr.";
for(int i=0;i<N;i++)
{
cin>>a[i];
}
cout<<"shuchu wei";
for(int i=0;i<N;i++)
{
cout<<a[i]<<endl;
}
s.insertSort(a,N);
return 0;
};
冒泡排序
- #include<stdlib.h>
- using namespace std;
- #define N 4 //不能加分号结束
- class sort
- {
- public:
- void insertSort(int a[],int n);
- sort()
- {
- cout<<"Start"<<endl;
- }
- sort(const sort&s);
- void bubblesort(int a[],int n);
- private:
- int c;
- };
- void sort::insertSort(int a[],int n)
- {
- int i=1,j=0,key;//设两个变量值的目的是内外变化,如果只有一个内外的变化会产生影响
- while(i<n) //外循环
- {
- key=a[i];//把第几个拿出来,和前边的对比;
- j=i-1; //前边的那个值
- while(key<a[j]&&j>=0) //内循环
- {
- a[j+1]=a[j]; //把当前值改成前一个值
- j--; //位置前移一位
- }
- a[j+1]=key; //比较成功之后,把哨兵插到当前位置,注意用的是j
- i++; //转到下次循环
- }
- cout<<"-----insertsort------\n ";
- for(int i=0;i<n;i++)
- {
- cout<<a[i];
- }
- cout<<endl;
- }
- void sort::bubblesort(int a[],int n)
- {
- int i=0,j=n;
- for(;i<n-1;i++)//外层循环
- {
- for(;j>i;j--)//内层循环,从最后一个开始向上冒泡,冒泡次数逐渐减一
- {
- if(a[j]<a[j-1])//倒数开始,两个数进行比较,下边是交换过程
- {
- int temp=a[j-1];
- a[j-1]=a[j];
- a[j]=temp;
- }
- }
- }
- cout<<"-----bubblesort------\n ";
- for(int i=0;i<n;i++)
- {
- cout<<a[i];
- }
- cout<<endl;
- }
- sort::sort(const sort&s)
- {
- cout<<"news\n";
- }
- int main()
- {
- sort s;
- //sort b=s;
- int a[N];
- cout<<"lease input arr.";
- for(int i=0;i<N;i++)
- {
- cin>>a[i];
- }
- cout<<"shuchu wei";
- for(int i=0;i<N;i++)
- {
- cout<<a[i];
- }
- cout<<endl;
- s.insertSort(a,N);
- s.bubblesort(a,N);
- return 0;
- };