|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
非常适合初学者
1.快速排序(c++)
- #include<iostream>
- #include<vector>
- #include<iterator>
- using namespace std;
- class FastSort
- {
- private:
- vector<int> array;
- public:
- int create();
- int paixu(vector<int>& array,int left,int right);
- inline int usepaixu();
- int print();
- };
- int FastSort::create()
- {
- cout<<"请输入要排序的数组,以CTRL+Z结束:"<<endl;
- int number;
- while(cin>>number)
- array.push_back(number);
- return 0;
- }
- int FastSort::paixu(vector<int>& array,int left,int right)
- {
- if(array.empty())
- {
- create();
- }
- int newleft=left;
- int newright=right;
- int mid=array[left];
- int temp=0;
- while(newleft<newright)
- {
- while(array[newright]>=mid&&newleft!=newright)
- --newright;
- if(array[newright]<mid) array[newleft]=array[newright];
- while(array[newleft]<=mid&&newleft!=newright)
- ++newleft;
- if(array[newleft]>mid) array[newright]=array[newleft];
- }
- array[newleft]=mid;
- if(left<newleft-1) paixu(array,left,newleft-1);
- if(right>newright+1) paixu(array,newright+1,right);
- return 0;
- }
- int FastSort::usepaixu()
- {
- paixu(array,0,array.size()-1);
- return 0;
- }
- int FastSort::print()
- {
- cout<<"排序后的数组为:"<<endl;
- for(vector<int>::iterator iter=array.begin()
- ;iter!=array.end();iter++)
- cout<<*iter<<" "<<flush;
- cout<<endl;
- return 0;
- }
- int main()
- {
- FastSort test;
- test.create();
- test.usepaixu();
- test.print();
- system("pause");
- return 0;
- }
|
2.快速排序(c)
- #include"stdio.h"
- void quick_sort(int s[], int l, int r)
- {
- int k,a,b,m=s[l];
- a=l,b=r;
- while(l<r)
- {
- if(s[r]<=m)
- {
- s[l]=s[r];
- s[r]=s[++l];
- s[l]=m;
- }
- else r--;
- quick_sort(s,a,l-1);
- quick_sort(s,l+1,b);
- }
- }int main()
- {
- int array[]={53,36,48,41,60,7,13,5,56};
- int l=0,r=sizeof(array)/sizeof(int)-1;
- quick_sort(array, l, r);
- for(l=0;l<=r;l++)
- printf("%d ",array[l]);
- printf("\n");
- return 0;
- }
|
3.希尔排序
- #include"stdio.h"
- int main()
- {
- int array[]={113,76,55,23,60,17,18,85,66,11};
- int h,j,i,m,len=sizeof(array)/sizeof(int);
- for(h=len/2;h>0;h=h/2)
- {
- for(j=h;j<len;j++)
- {
- for(i=j-h;i>=0;i=i-h)
- {
- m=array;
- if(array[i+h]<m)
- {
- array=array[i+h];
- array[i+h]=m;
- }
- }
- } }
- for(j=0;j<len;j++)
- printf("%d ",array[j]);
- printf("\n");
- getchar();
- return 0;
- }
|
4.选择排序
- #include"stdio.h"
- int main()
- {
- int array[6]={24,70,12,85,106,8};
- int i,j,n=0,middle,sub,min;
- for(j=0;j<6;j++)
- {
- min=array[n];
- for(i=n;i<6;i++)
- {
- if(min>array)
- {
- min=array;
- sub=i;
- }
- }
- middle=array[n];
- array[n]=array[sub];
- array[sub]=middle;
- n++;
- }
- for(j=0;j<6;j++)
- printf("%d ",array[j]);
- printf("\n");
- return 0;
- }
|
5.冒泡排序
- #include<iostream>
- #include<vector>
- #include<iterator>
- using namespace std;
- class sort
- {
- private:
- vector<int> dig;
- public:
- int newner();
- int paixu();
- int print();
- };
- int sort::newner()
- {
- cout<<"请输入你排序的数组:"<<endl;
- int number;
- while(cin>>number)
- dig.push_back(number);
- return 0;
- }
- int sort::paixu()
- {
- for(int i=0;i!=dig.size();i++)
- for(vector<int>::iterator iter=dig.begin()
- ;iter!=dig.end()-1;iter++)
- if(*iter>*(iter+1))
- {
- iter=dig.insert(iter,*(iter+1));
- iter=iter+2;
- iter=dig.erase(iter);
- iter=iter-2;
- }
- cout<<endl;
- return 0;
- }
- int sort::print()
- {
- if(dig.empty())
- {
- cout<<"没有输入要输入的数组!"<<endl;
- return 1;
- }
- cout<<"排序后的数组为:"<<endl;
- for(vector<int>::iterator iter=dig.begin()
- ;iter!=dig.end();iter++)
- cout<<*iter<<" "<<flush;
- cout<<endl;
- return 0;
- }
- int main()
- {
- sort test;
- test.newner();
- test.paixu();
- test.print();
- return 0;
- }
|
6.排序树
- #include<iostream>
- #include<vector>
- #include<iterator>
- using namespace std;
- class SortTree
- {
- private:
- struct node
- {
- int data;
- node* left;
- node* right;
- node(const int x=0):data(x),left(),right(){}
- };
- node* root;
- public:
- SortTree():root(){}
- int insert(node*& a,node*& b);
- int insert(const int& x);
- int print(node*& p);
- int print();
- int clear(node*& p);
- ~SortTree();
- };
- int SortTree::clear(node*& p)
- {
- if(p==NULL) return 0;
- clear(p->left);
- clear(p->right);
- delete p;
- return 0;
- }
- SortTree::~SortTree()
- {
- clear(root);
- }
- int SortTree::insert(node*& a,node*& b)
- {
- if(b==NULL) { b=a;return 0;}
- if(a->data>b->data) insert(a,b->right);
- else insert(a,b->left);
- return 0;
- }
- int SortTree::insert(const int& x)
- {
- node* p=new node(x);
- insert(p,root);
- return 0;
- }
- int SortTree::print(node*& p)
- {
- if(p==NULL) return 0;
- print(p->left);
- cout<<p->data<<" "<<flush;
- print(p->right);
- return 0;
- }
- inline int SortTree::print()
- {
- print(root);
- return 0;
- }
- int main()
- {
- SortTree test;
- srand(10);
- for(int i=0;i<10;i++)
- {
- int t=rand()%100;
- test.insert(t);
- }
- test.print();
- cout<<endl;
- return 0;
- }
|
7.堆排序
- #include<iostream>
- #include<vector>
- #include<iterator>
- using namespace std;
- class DuiSort
- {
- private:
- vector<int> nArray;
- public:
- int create();
- int swap(int& a,int& b);
- int paixu();
- int print();
- };
- int DuiSort::create()
- {
- cout<<"请输入要排序的数组:"<<endl;
- int number;
- while(cin>>number)
- nArray.push_back(number);
- return 0;
- }
- int DuiSort::swap(int& a,int& b)
- {
- int temp=a;
- a=b;
- b=temp;
- return 0;
- }
- int DuiSort::paixu()
- {
- int size=nArray.size();
- if(nArray.empty())
- create();
- for(int i=size/2-1;i>=0;i--)
- while(2*i+1<size)
- {
- int j=2*i+1;
- if((j+1)<size&&nArray[j]<nArray[j+1])
- j++;
- if(nArray<nArray[j])
- {
- swap(nArray,nArray[j]);
- i=j;
- }
- else break;
- }
- for(int i=size-1;i>0;i--)
- {
- swap(nArray[0],nArray);
- int t=0;
- while(2*t+1<i)
- {
- int j=2*t+1;
- if((j+1)<i&&nArray[j]<nArray[j+1])
- j++;
- if(nArray[t]<nArray[j])
- {
- swap(nArray[t],nArray[j]);
- t=j;
- }
- else break;
- }
- }
- return 0;
- }
- int DuiSort::print()
- {
- cout<<"排序后的数组为:"<<endl;
- for(vector<int>::iterator iter=nArray.begin();
- iter!=nArray.end();iter++)
- cout<<*iter<<" "<<flush;
- cout<<endl;
- return 0;
- }
- int main()
- {
- DuiSort test;
- test.create();
- test.paixu();
- test.print();
- return 0;
- }
|
8.选择排序(动态链表)
|
|