首页 > 代码库 > 交换类排序算法

交换类排序算法

#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;}

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

交换类排序算法