初学数据结构
/*排好的元素放在最后*/
#include <stdio.h>
typedef int KeyType;
struct DataType
{
KeyType key;
};
/*算法*/
void BubbleSort(struct DataType a[],int n) // a[] 要排序的数组,n 数组中的元素个数
{
int i,j;
/* flag 变量用于标记本次交换排序过程是否有交换动作,若本次交换排序
*过程没有交换动作则说明数据元素集合全部排好序,就可提前结束排序过程*/
int flag = 1;
struct DataType temp;
for(i = 1; i < n && flag == 1; i++) // i 控制排序循环的次数(初始值 i=1)共有 n-1 趟排序
{
flag = 0;
for(j = 0; j < n-i; j++) // j 控制元素位置
{
if(a[j].key > a[j+1].key)
{
flag = 1;
temp = a[j+1];
a[j+1] = a[j];
a[j] = temp;
}
}
}
}
/*测试程序*/
int main()
{
int i;
int n = 21;
struct DataType test[21] = {1,16,45,87,23,5,9,34,10,6,26,64,5,7,89,6,24,100,4,7,19};
BubbleSort(test,n); /*注意这个的参数及参数传递*/
for(i = 0; i < n; i++)
{
printf(" %d ",test[i].key);
}
printf("\n");
//system("pause"); //暂停
return 0;
}