码迷,mamicode.com
首页 > 其他好文 > 详细

交换类排序算法

时间:2014-09-01 12:15:53      阅读:224      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   io   ar   for   art   div   log   

#include<stdio.h>
/*
*交换类排序,每天一道算法题 
*按照从小到大的顺序进行排序 
* 毛施平
*/
//冒泡排序 
void traverseArray(int *p,int length)
{
   int i=0;
   for(;i<length;i++)
   {
     printf("%d\n",p[i]);
   } 

}
//这个是最简单的 
void bubbleSortOne(int *p,int length)
{
  int i=length;
  int j,temp;
  int lastChangeIndex;
  printf("简单一点:\n");
  while(i>1)
  {
   lastChangeIndex=1;
    for(j=0;j<i-1;j++)
    {
       if(p[j]>p[j+1])
       {
        temp=p[j];
        p[j]=p[j+1];
        p[j+1]=temp;
        lastChangeIndex=j;
       }
    }
   traverseArray(p,9);
   printf("\n");
   i=lastChangeIndex;
  } 
} 
//这个排序并不是最简单的 
void bubbleSort(int *p,int length)
{
  int i,j,temp;
  for(i=0;i<length;i++)
  {
    for(j=0;j<length-i-1;j++)
    {
       if(p[j]>p[j+1])
       {
        temp=p[j];
        p[j]=p[j+1];
        p[j+1]=temp;
       }
    } 
  }
} 
//快速排序 
int Partition(int *p,int low,int high)
{
  //int low=0,high=length-1;
  int temp=p[low];
  while(low<high)
  {
    while(low<high&&p[high]>=temp) high--;
       p[low]=p[high];
    while(low<high&&p[low]<=temp) low++;
       p[high]=p[low]; 
  }
  p[low]=temp;
  return low;
} 
void QSort(int *p,int low,int high)
{
  if(low<high)
  {
   int pivotloc=Partition(p,low,high);
   traverseArray(p,9);
   printf("\n"); 
   QSort(p,low,pivotloc-1);
   QSort(p,pivotloc+1,high);
  }


}

int main()
{
  int a[]={9,2,1,4,5,7,3,8,6}; 
  bubbleSortOne(a,sizeof(a)/sizeof(int));
  int low=0;
  int high=sizeof(a)/sizeof(int)-1; 
 // QSort(a,low,high);
  traverseArray(a,sizeof(a)/sizeof(int));
  
  system("pause");
  return 0;
}

冒泡排序和快速排序都属于交换类排序,最简单的冒泡排序需要考虑不

交换类排序算法

标签:style   blog   color   io   ar   for   art   div   log   

原文地址:http://www.cnblogs.com/moshang/p/3948941.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!