// 各种排序算法.cpp : コンソール アプリケーションのエントリ ポイントを定義します。 // #include "stdafx.h" #include <iostream> using namespace std; void buble(int a[],int len); void isort(int a[],int len); void qsort(int a[],int left, int right); int _tmain(int argc, _TCHAR* argv[]) { int a[]={1,2,3,5,4,5,7,8,9}; int len = sizeof(a)/sizeof(int); cout<<"qsort()"<<endl; qsort(a,0,len-1); for(int k = 0; k<len;k++) { cout<<a[k]; } cout<<endl; cout<<"buble()"<<endl; buble(a,len); cout<<"isort()"<<endl; isort(a,len); system("pause"); return 0; } void buble(int a[],int len) { for(int k = 0;k<len;k++) { cout<<a[k]; } cout<<endl; for(int i=1;i<len;i++) { int temp; for(int j=0;j<len-i;j++) { if(a[j]<a[j+1]) { temp = a[j]; a[j] = a[j+1]; a[j+1] = temp; } } for(int k=0;k<len;k++){ cout<<a[k]; } cout<<endl; } } void isort(int a[],int len) { for(int k = 0;k<len;k++) { cout<<a[k]; } cout<<endl; for(int i = 1;i<len;i++) { int inserter = a[i]; int j=i-1; for(;j>=0;j--) { if(inserter<a[j]) { a[j+1]=a[j]; } else break; } a[j+1] = inserter; for(int k = 0;k<=i;k++) { cout<<a[k]; } cout<<endl; } } void qsort(int a[],int left,int right) { int m = (left+right)/2; int middle = a[m]; int l = left; int r = right; while(l<r) { while(a[l]>a[m]) ++l; while(a[r]<a[m]) --r; if(l>r)break; int temp = a[l]; a[l] = a[r]; a[r] = temp; if(l!= m) --r; if(r!= m) ++l; for(int k = 0;k<=right;k++) { cout<<a[k]; } cout<<endl; } if(l == r) l++; //l++; if(left<r) qsort(a,left,l-1); if(l<right) qsort(a,r+1,right); }