- #include<iostream>
- using namespace std;
- void Quicksort(int *a,int left,int right);
- void Bubblesort(int *a,int n);
- void Selectsort(int *a,int left ,int right);
- int main()
- {
- int i,a[10];
- cout<<"請輸入十個整數:";
- for(i=0;i<10;i++)
- cin>>a[i];
- cout<<"排序前為:"<<endl<<endl;
- for(i=0;i<10;i++)
- cout<<a[i]<<" ";
- cout<<endl<<endl;
- cout<<"快速排序為:"<<endl<<endl;
- Quicksort(a,0,9);
- for(i=0;i<10;i++)
- cout<<a[i]<<" ";
- cout<<endl<<endl<<"冒泡排序為:"<<endl<<endl;
- Bubblesort(a,10);
- cout<<endl<<"直接選擇排序為:"<<endl<<endl;
- Selectsort(a,0,9);
- return 0;
- }
- //快速排序
- void Quicksort(int *a,int left,int right)
- {
- if(left<right)
- {
- int i =left,j=right;
- double key = a[left];
- while(i<j)
- {
- while(i<j&&a[j]>=key) j--;
- a[i]=a[j];
- while(i<j&&a[i]<=key) i++;
- a[j]=a[i];
- }
- a[i]=key;
- Quicksort(a,left,i-1);
- Quicksort(a,i+1,right);
- }
- }
- //冒泡排序
- void Bubblesort(int *a,int n)
- {
- int i,j;
- bool flag;
- for(i=0;i<10;i++)
- {
- flag=false;
- for(j=9;j>=i;j--)
- {
- if(a[j-1]>a[j])
- {
- int temp;
- temp=a[j-1];
- a[j-1]=a[j];
- a[j]=temp;
- }
- flag=true;
- }
- if(flag==false)
- break;
- }
- for(i=0;i<10;i++)
- cout<<a[i]<<" ";
- cout<<endl;
- }
- //直接選擇排序
- void Selectsort(int *a,int left ,int right)
- {
- for(int i=left;i<right;i++)
- {
- int k=i;
- for(int j=i+1;j<=right;j++)
- {
- if(a[j]<a[k])
- k=j;
- }
- if(k!=i)
- {
- int temp=a[i];
- a[i]=a[j];
- a[j]=temp;
- }
- }
- for(i=0;i<10;i++)
- cout<<a[i]<<" ";
- cout<<endl<<endl;
- }