设顺序表的存储结构如下:
     typedef struct
    {
      int key;//关键字项
       InfoType otherinfo;// 其它数据项
    }RecordType; //记录类型
 
     typedef struct
    {
      RecordType r[MaxSize+1];//r[0]闲置
       int length; //顺序表的实际长度
    }SqList; //顺序表类型

 

试设计基于上述存储结构的冒泡排序算法,并分析算法的时间复杂度。

 

 

 

自己答:


//BubbleSort.cpp
//This function is to sort SqList
# include <iostream.h>
# include <conio.h>

# define MAXSIZE 20
# define MAX_LENGTH 100
typedef int RedType;

typedef struct //define structure SqList
{ RedType r[MAXSIZE+1];
int length;
}SqList;

void BubbleSort(SqList &L)
{ int i,j,temp;
for(i=0;i<=L.length;++i)
for(j=L.length-2;j>i;--j)
if(L.r[j+1]<L.r[j])
{ temp=L.r[j+1];
L.r[j+1]=L.r[j];
L.r[j]=temp;
}
}

void main() //main() function
{ int i;
SqList L;
cout<<endl<<endl<<"BubbleSort.cpp";
cout<<endl<<"=============="<<endl;
cout<<endl<<"Please input the length of SqList (eg,5): ";
cin>>L.length;
L.length++; //the last is aided space
for(i=1;i<L.length;++i)
{ cout<<"Please input the "<<i<<"th element of SqList (eg,58): ";
cin>>L.r[i];
}
cout<<endl<<"The disordered : ";
for(i=1;i<L.length;i++)
cout<<L.r[i]<<" ";
BubbleSort(L); //call BubbleSort()
cout<<endl<<"The ordered : ";
for(i=1;i<L.length;i++)
cout<<L.r[i]<<" ";
cout<<endl<<endl<<"...OK!...";
getch();
} //main() end