第三周实践项目8 以第一个元素为分界线,将所有小于它的元素移到该元素的前面,将所有大于它的元素移到该元素的后面。

来源:互联网 发布:amp网络语言是什么意思 编辑:程序博客网 时间:2024/05/22 02:22

设顺序表有10个元素,其元素类型为整型。设计一个算法,以第一个元素为分界线,将所有小于它的元素移到该元素的前面,将所有大于它的元素移到该元素的后面。 
  设计出的算法是:

#include <stdio.h>#include <malloc.h>#define MaxSize 100typedef int ElemType;typedef struct{    ElemType data[MaxSize];    int length;} SqList;void CreateList(SqList *&L, ElemType a[], int n){    int i;    L=(SqList *)malloc(sizeof(SqList));    for (i=0; i<n; i++)        L->data[i]=a[i];    L->length=n;}void DispList(SqList *L){    int i;    for (i=0; i<L->length; i++)        printf("%d ",L->data[i]);    printf("\n");}void move1(SqList *&L)  //定义解决问题的算法{    int i=0,j=L->length-1;    ElemType pivot=L->data[0];    ElemType tmp;    while (i<j)    {        while (i<j && L->data[j]>pivot)            j--;        while (i<j && L->data[i]<=pivot)            i++;        if (i<j)        {            tmp=L->data[i];            L->data[i]=L->data[j];            L->data[j]=tmp;        }    }    tmp=L->data[0];    L->data[0]=L->data[j];    L->data[j]=tmp;}int main()   //在main函数中调用,保证程序能运行,解决问题{    SqList *sq;    ElemType x[10]= {3, 8, 2, 7, 1, 5, 3, 4, 6, 0};    CreateList(sq, x, 10);    DispList(sq);    move1(sq);    DispList(sq);    return 0;}


阅读全文
0 0
原创粉丝点击