/**
*
* Coder: LinX 2017-7-18 - 2017-7-21
*
* 内容: 交换类排序
*
*/
void bubbleSort(int *a,int len); //冒泡排序
void quickSort(int *a,int start,int end); //快速排序
int main()
{
int a[10]={5,9,8,7,6,1,4,3,2,6};
quickSort(a,0,9);
print(a,10);
return 0;
}
// 最好的情况下时间复杂度为O(nlogn),但是当序列完全是有序的时候,复杂度为O(n^2)
void quickSort(int *a,int start,int end)
{
int mid,i=start,j=end,temp;
if(start<end)
{
temp=a[start];
while(i!=j)
{
while(i<j&&a[j]>=temp)
{
j--;
}
if(i<j)
{
a[i]=a[j];
i++;
}
while(i<j&&a[i]<temp)
{
i++;
}
//代码细节,这里i<j
if(i<j)
{
a[j]=a[i];
j--;
}
}
a[j]=temp;
print(a,10);
quickSort(a,start,i-1);
quickSort(a,i+1,end);
}
}
/*冒泡排序*/
void bubbleSort(int *a,int len)
{
int i,j,temp,flag;
for(i=0;i<len;i++)
{
flag=0;
for(j=0;j<len-i-1;j++)
{
if(a[j]>a[j+1])
{
flag=1;
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
if(flag==0)
{
return;
}
}
}
void print(int *a,int len)
{
int i;
for(i=0;i<len;i++)
{
printf("%d ",a[i]);
}
printf("\n");
}
内部排序-交换类排序
最新推荐文章于 2024-01-30 23:10:19 发布