汇总,分享林福平老师授课所讲算法程序
/*
* 作者:太原理工大学 计算机学院 林福平* 日期:2015年3月7日
*
* 说明:本程序根据有关书籍内容或网络上的程序编辑修改而成。
* 程序力求做到最为简洁地实现有关算法。
*
* 冒泡排序算法程序
*
*/
#include <stdio.h>
#include<stdlib.h>
#include <time.h>
#define N 7
void getData(int [], int);
void outputData(int [], int);
void bubblesort(int a[], int n);
void swap(int *pm, int *pn);
int main(void)
{
int a[N];
getData(a, N); /* 获得数据放入数组a中 */
printf("Unordered datas: ");
outputData(a, N);
bubblesort(a, N);
printf("In sorted order: ");
outputData(a, N);
return 0;
}
/* 冒泡排序 */
void bubblesort(int a[], int n)
{
int i, j, swapflag=1;
for(i=0; swapflag && i < n-1; i++)
{
swapflag = 0;
for(j=0; j<n - 1 - i; j++)
if(a[j] > a[j+1]) {
swap(a+j, a+j+1); /* 交换两个相邻的数 */
swapflag = 1;
}
}
}
void swap(int *pm, int *pn)
{
int temp;
temp = *pm;
*pm = *pn;
*pn = temp;
}
void getData(int d[], int n)
{
time_t t;
srand((unsigned) time(&t)); /* 设置随机数起始值 */
int i;
for(i=0; i < n; i++)
d[i] = rand() % 1000; /* 获得0-999之间的整数值 */
}
void outputData(int d[], int n)
{
int i;
for (i = 0; i < n; i++)
printf("%d ", d[i]);
printf("\n");
}