0
点赞
收藏
分享

微信扫一扫

2008秋-计算机软件基础-快速排序

快速排序c语言源程序之一
// 快速排序
// 使用递归调用来实现快速排序
// Author: eman lee

/*Quick Sort */

#include <stdio.h>

void quick_sort(int data[], int low, int high)

{

   int i, j, pivot;

   if (low < high)

   {

              pivot=data[low];

              i=low; 

              j=high;

              

              while(i<j)

              {

                     while (i<j && data[j]>=pivot)

                            j--;

                     if(i<j)

                            data[i++]=data[j];   //将比枢轴记录小的记录移到低端
                     

                     while (i<j && data[i]<=pivot)

                            i++;

                     if(i<j) 

                            data[j--]=data[i];       //将比枢轴记录大的记录移到高端
              }

              

              data[i]=pivot;         //枢轴记录移到最终位置
              

              quick_sort(data,low,i-1);

              quick_sort(data,i+1,high);

    }

}

 
void main()

{

       int i;

       int data[9] = {54,38,96,23,15,72,60,45,83};

        for(i=0;i<9;i++)

       {

         printf(" %d ",data[i]);

       }

        printf("\n");

       quick_sort(data, 0, 8);

       for(i=0;i<9;i++)

       {

         printf(" %d ",data[i]);

       }

}
快速排序c语言源程序之二
// 快速排序
// 使用递归调用来实现快速排序
// 10/21/2007
// Author: eman lee

/*Quick Sort */

#include <stdio.h>

struct node

{

  int key;

  int other;

};


typedef struct node SeqListNode;

//划分算法
int Partition(SeqListNode R[],int i,int j)

{

 SeqListNode pivot=R[i];

 while(i<j)

   {

     while(i<j&&R[j].key>=pivot.key)

     j--;

     if(i<j)

       R[i++]=R[j];

     while(i<j&&R[i].key<=pivot.key)

       i++;

     if(i<j)

       R[j--]=R[i];

    } //endwhile
 R[i]=pivot;

 return i;

} 

//快速排序算法
void QuickSort(SeqListNode R[],int low,int high)

{

  int pivotpos;

  if(low<high)

    {

     pivotpos=Partition(R,low,high);

     QuickSort(R,low,pivotpos-1);

     QuickSort(R,pivotpos+1,high);

    }

}


 
void main()

{

       int i;

       SeqListNode data[9] = {{54,11},{38,22},{96,33},{23,44},{15,55},{72,66},{60,77},{45,88},{83,99}};

        for(i=0;i<9;i++)

       {

         printf(" %d ",data[i].key);

       }

        printf("\n");

       QuickSort(data,0,8);

       for(i=0;i<9;i++)

       {

         printf(" %d ",data[i].key);

       }

}

举报

相关推荐

0 条评论