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<&& data[j]>=pivot)
                            j
--;
                     
if(i<j)
                            data[i
++]=data[j];   //将比枢轴记录小的记录移到低端
                     
                     
while (i<&& 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, 
08);
       
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);
       }
}
posted @ 2007-10-21 20:13  emanlee  阅读(...)  评论(... 编辑 收藏