注册 登录
编程论坛 数据结构与算法

快速排序问题解决不了

cwl168 发布于 2013-01-02 20:39, 395 次点击
#define SIZE 100
#include <stdio.h>
#include <malloc.h>
typedef struct{
    int key;
    int nexi;
}SLNode;
typedef struct{
    SLNode r[SIZE];
    int length;
    struct SqList *next;
}SqList ,*LinkList;

LinkList CreateList_L(LinkList&L,int n){
        int i;
        LinkList p;
    L=(LinkList)malloc(sizeof(SqList));
        L->next=NULL;
        for(i=n;i>0;--i){
                p=(LinkList)malloc(sizeof(SqList));
                p->next=null;
                p->data=getchar();
                p->next=L->next;
                L->next=p;
        }
        return L;
}

int Partition(SqList &L, int low, int high){
    int pivotkey;
   L.r[0] = L.r[low];
   pivotkey = L.r[low].key;
   while (low<high) {
      while (low<high && L.r[high].key>=pivotkey)
       --high;
       L.r[low] = L.r[high];
       while (low<high && L.r[low].key<=pivotkey)
       ++low;
        L.r[high] = L.r[low];
   }
   L.r[low] = L.r[0];            
   return low;                  
}
void QSort(SqList &L, int low, int high)
 {  int pivotloc;
     if (low < high)
         {
           pivotloc = Partition(L, low, high);
           
           QSort(L, low, pivotloc-1);
         
           QSort(L, pivotloc+1, high);
           
  }
}
main(){
    LinkList L;
    L=CreateList_L(L,10);
    QSort(L, 1,10);
}
   



3 回复
#2
不玩虚的2013-01-03 02:02
你的编程太混乱了,排序的话看你要链表排序还是数组排序。楼主得选一种。不要被书给混乱了。结构体数组,每个元素相当于对象,对象访问结构体的成员.key。结构体指针,要访问结构体成员用->就行。如果还是想排序关键字key,用上一种方法,把插入排序改成折半排就行。
#3
cwl1682013-01-03 19:57
你真菜
#4
寒风中的细雨2013-01-04 10:22
回复 3楼 cwl168
LZ 具体想表达什么意思
1