#include<stdio.h>
#include<stdlib.h>
#define MAXISIZE 1000
#define random(x)(rand()%x)
//顺序表结构体类型
typedef struct
{
int data[MAXISIZE];
int length;
}SeqList;
//函数前置声明
void initSeqList(SeqList * S);
void seqListAssign(SeqList * S);
void traverseSeqList(SeqList * S);
void bubbleSort(SeqList * S);
void swapVal(int * p, int * q );
//交换两个数的数据
void swapVal(int * p, int * q )
{
int tempVal;
tempVal = *p;
*p = *q;
*q = tempVal;
return;
}
//折半插入排序
void bubbleSort(SeqList * S)
{
int i;
int j;
for(i = 1;i<=S->length-1;i++)
{
for(j = 0;j<=S->length-i-1;j++)
{
if(S->data[j+1]<S->data[j])
{
swapVal(&S->data[j+1],&S->data[j]);
}
}
}
return;
}
//初始化顺序表
void initSeqList(SeqList * S)
{
S->length = 0;
return ;
}
//给顺序表赋值
void seqListAssign(SeqList * S)
{
int i;
for(i = 0;i<MAXISIZE;i++)
{
S->data[i] = random(1000);
}
S->length = MAXISIZE;
return;
}
//将顺序表中的元素遍历输出
void traverseSeqList(SeqList * S)
{
int i;
for( i = 0;i<S->length;i++)
{
printf("%-6d",S->data[i]);
}
printf("\n");
return ;
}
//主函数
int main(void)
{
SeqList S;
initSeqList(&S);
seqListAssign(&S);
printf("产生的随机数据为:\n");
traverseSeqList(&S);
bubbleSort(&S);
printf("排序后数据为:\n");
traverseSeqList(&S);
return 0;
}
冒泡排序
最新推荐文章于 2019-05-22 10:34:53 发布