排序算法——冒泡算法(C语言版)

/*在sort.h文件定义用于排序的顺序表结构,如下:*/

sort.h

#define MAXSIZE 10

#define true 1

#define false 0

typedef int Status;

typedef struct

{

int r[MAXSIZE +1];/*r[0]用作哨兵或临时变量(目前还没有用到此变量的作用)*/

int length;

}SqList;

/*因在排序中大量用到的操作是数组元素的交换,将其写成函数*/

swap.c

void swap(SqList *L, int i, int j)

{

int temp = L->r[i];

L->r[i] = L->r[j];

L->r[j] = temp;

}

/*在讲解正真冒泡算法之前,首先看一下简单的交换排序算法*/

Bubble_Sort0.c

void Bubble_Sort0(SqList *L)

{

int i, int j;

for(i=1; ilength; i++)

{

for(j=i; j<=L->length; j++)

{

if(L->r[i] > L->r[j])

{

swap(L, i, j);

}

}

}

}

/*真正的冒泡排序算法*/

Bubble_Sort1.c

void Bubble_Sort1(SqList *L)

{

int i, int j;

for(i=1; ilength; i++)

{

for(j=L->length-1; j>=i; j++)

{

if(L->r[j]>L->r[j+1])

{

swap(L, j, j+1);

}

}

}

}

/*冒泡排序算法的优化*/

void Bubble_Sort2(SqList *L)

{

int i, int j;

Status flag = true;

for(i=1; ilength&&flag = true; i++)

{

flag =false;

for(j=L->length-1; j>=i; j--)

{

if(L->r[j]>L->r[j+1])

{

swap(L, j, j+1);

flag = true;

}

}

}

}

 

你可能感兴趣的:(排序算法,冒泡排序,数据结构,C语言)