您的位置:首页 > 其它

内排序(3)交换排序:改进的冒泡和快速排序

2013-03-21 09:37 267 查看
改进的冒泡,稳定排序

int a[]={16,7,3,20,17,8};

 int size=6;

for(int i=0;i<size;i++)

 {

  int k=i;

  for(int j=i;j<size;j++)

  {

   if(a[k]>a[j])

    k=j;

  }

  if(k!=i)

   swap(a[k],a[i]);

 }

快速,不稳定排序

int Partition(int* a,int l,int h)

{

 int temp=a[l];

 while(l<h)

 {

  while(l<h&&a[h]>temp)

   h--;

  if(l<h)

   a[l++]=a[h];

  while(l<h&&a[l]<temp)

   l++;

  if(l<h)

   a[h--]=a[l];

  

 }

 a[l]=temp;

 return l;

}

void QuickSort(int* a,int l,int h)

{

 if(l>=h) return;

 int m=Partition(a,l,h);

 QuickSort(a,l,m-1);

 QuickSort(a,m+1,h);

}

int a[]={16,7,3,20,17,8};

 int size=6;

QuickSort(a,0,size-1);

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: