学习数据结构,有关冒泡排序的一个个人总结,下面是在vc6.0上自己敲得代码,以供大家参考,予人玫瑰,手留余香,有什么不足之处,还请留言指出。
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
void showshu(int *par, int len);
//冒泡排序总结(C语言)
//以数组为例:
//1)方法一(“沉”)
void maopao1(int *par, int len)
{
int i, j;
if (NULL == par)
{
printf("数组分配内存失败!\n");
}
for (i = 0; i < len-1; i++)
{
for (j = 0; j < len-i-1; j++)
{
if (par[j] > par[j+1])
{
int temp;
temp = par[j];
par[j] = par[j+1];
par[j+1] = temp;
}
}
}
return;
}
//2)方法二(“升”)
void maopao2(int *par, int len)
{
int i, j;
if (NULL == par)
{
printf("数组分配内存失败!\n");
}
for (i = 0; i < len-1; i++)
{
for (j = i+1; j < len; j++)
{
if (par[i] > par[j])
{
int temp;
temp = par[i];
par[i] = par[j];
par[j] = temp;
}
}
}
return;
}
int main()
{
int len;
printf("请输入待排序的数组的长度len = ");
scanf( "%d", &len);
int *par = (int*)malloc(sizeof(int)*len);
printf("请输入数组元素:\n");
for (int i = 0; i < len; ++i)
{
scanf( "%d", &par[i]);
}
//数组“沉”
maopao1(par, len);
showshu(par, len);
printf("\n");
//数组“升”
maopao2(par, len);
showshu(par, len);
printf("\n");
return 0;
}
void showshu(int *par, int len)
{
if (NULL == par)
{
printf("数组为空!\n");
}
for (int j = 0; j < len; j++)
{
printf("%d ", par[j]);
}
return;
}