八种基本排序(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;
}
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;
}