王朝 数据结构之元素位置交换

来源:互联网 发布:梦幻宠物灵力计算法伤 编辑:程序博客网 时间:2024/04/27 21:17
//主要元素的交换注意最后的交换#include <iostream>#include<cstdio>#include<malloc.h>#include<cstring>using namespace std;#define MaxSize 100typedef struct{ int data[MaxSize]; int length;}SqList;void InitList(SqList *&L){ L=(SqList*)malloc(sizeof(SqList)); L->length=0;}void CreatList(SqList *&L,int 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 movel(SqList *&L){    int i=0,j=L->length-1;    int pivot=L->data[0];    int 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;    printf("i=%d\n",i);}/*void movel2(SqList *&L){    int i=0,j=L->length-1;    int pivot=L->data[0];    int tmp;    while(i<j)    {        while(i<j&&L->data[j]>pivot)            j--;            L->data[i]=L->data[j];            i++;        while(i<j&&L->data[i]<=pivot)            i++;            L->data[j]=L->data[i];            j--;    };    L->data[i]=pivot;    printf("i=%d\n",i);}*/int main(){    int n,i;    int a[MaxSize];    cin>>n;    SqList *L;    for(i=0;i<n;i++)        scanf("%d",&a[i]);    InitList(L);    CreatList(L,a,n);    movel(L);    return 0;}