八种基本排序(1)

#include<iostream>
using namespace std;
#define N 5
void show(int *arr)
{
int i;
for(i=0;i<N;i++)
cout<<arr[i]<<"\t";
cout<<endl;
}


void bubberSort(int *arr)
{
cout<<"冒泡排序"<<endl;
int i,j;
for(i=N;i>1;--i)
for(j=0;j<i-1;j++)
{
if(arr[j]>arr[j+1])
{
int temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}//end if
}//end j
 
return ;
}
void selectSort(int *arr)
{
cout<<"选择排序"<<endl;
int i,j,maxIndex;
for(i=N;i>1;--i)
{
maxIndex=i-1;
for(j=0;j<i-1;j++)
{
if(arr[j]>arr[maxIndex])
{
maxIndex=j;
}//end if
}//end j
if(maxIndex!=i-1) 
{
int temp=arr[maxIndex];
arr[maxIndex]=arr[i-1];
arr[i-1]=temp;
}
        }
        
        
        
        return;
}


void insertSort(int *arr)
{
cout<<"插入排序"<<endl;
int i,j,temp;
for(i=1;i<N;i++)//插入位置遍历2-N-1
{
temp=arr[i];
j=i;
while(j>0&&temp<arr[j])//后移,插入
{
arr[j]=arr[j-1];
j--;
}
arr[j]=temp;//插入
}


return;
}


int quickSortOnce(int *arr,int low,int high)
{


int tmp=arr[low];//选定中心轴
while(low<high)
{

while(low<high&&tmp<arr[high]) high--;
arr[low]=arr[high];
while(low<high&&tmp>arr[low]) low++;
arr[high]=arr[low];
}
arr[low]=tmp;
return low;


}




void quickSort(int *arr,int low,int high)
{


if(low<high)
{

int axis=quickSortOnce(arr,low,high);
quickSort(arr,low,axis-1);
quickSort(arr,axis+1,high);


}


}








int main(int argc,char**argv)
{
int arr[N]={ 2,3,6,5,7};
// insertSort(arr);
// selectSort(arr);
// bubberSort(arr);
quickSort(arr,0,N-1);
show(arr);
return 0;
}
posted @ 2015-08-14 07:57  cloudren2020  阅读(122)  评论(0编辑  收藏  举报