今天在论坛被问到冒泡排序,索性做个笔记:
1. 源码
#include <stdio.h>
// #define _BubbleSort_
#define _SelectSort_
/*******************************************************************************************
** 函数名称: BubbleSort()
** 作 者: zyh
** 版 本: 1.0.0
** 日 期: 2011-11-5
** 功能描述: 冒泡排序
** 输 入: 1. 原数组
2. 数组元素个数
** 输 出: 无
** 返 回 值: 无
** 其 他:
** 修改历史:
1. 修改时间:
修 改 者:
版 本:
修改简述:
2. ......
*********************************************************************************************/
void BubbleSort(int arrayIn[],int n)
{
int i; /* 控制外层循环 */
int j; /* 控制内层循环 */
for (i= 0; i < n - 1; i++) /*n个数,n-1轮比较*/
{
for (j = 0; j < n - i - 1; j++)
{
if (arrayIn[j] > arrayIn[j+1])
{
arrayIn[j] = arrayIn[j] ^ arrayIn[j+1];
arrayIn[j+1] = arrayIn[j] ^ arrayIn[j+1];
arrayIn[j] = arrayIn[j] ^ arrayIn[j+1];
}
}
}
}
/*******************************************************************************************
** 函数名称: SelcetSort()
** 作 者: zyh
** 版 本: 1.0.0
** 日 期: 2011-11-5
** 功能描述: 选择排序
** 输 入: 1. 原数组
2. 数组元素个数
** 输 出: 无
** 返 回 值: 无
** 其 他:
** 修改历史:
1. 修改时间:
修 改 者:
版 本:
修改简述:
2. ......
*********************************************************************************************/
void SelcetSort(int arrayIn[],int n)
{
int i; /* 控制外层循环 */
int j; /* 控制内层循环 */
int minSub; /* 最小元素的下标 */
for (i = 0; i < n - 1; i++)
{
minSub = i; /* 假设当前比较元素是最小的 */
for (j = i + 1; j < n; j++)
{
if (arrayIn[j] < arrayIn[minSub])
{
minSub = j;
}
}
if (minSub != i)
{
arrayIn[minSub] = arrayIn[minSub] ^ arrayIn[i];
arrayIn[i] = arrayIn[minSub] ^ arrayIn[i];
arrayIn[minSub] = arrayIn[minSub] ^ arrayIn[i];
}
}
}
int main(void)
{
int i; /* 控制打印输出 */
int arrayIn[6] = {2,9,6,4,5,0};
printf("Before sort: "); /* 排序前 */
for (i = 0; i < 6; i++)
{
printf("%d ",arrayIn[i]);
}
printf("\n");
#ifdef _BubbleSort_
BubbleSort(arrayIn,6); /* 冒泡排序 */
printf("Bubble sort: ");
for (i = 0; i < 6; i++)
{
printf("%d ",arrayIn[i]);
}
printf("\n");
#endif
#ifdef _SelectSort_
SelcetSort(arrayIn,6); /* 冒泡排序 */
printf("SelcetSort sort: ");
for (i = 0; i < 6; i++)
{
printf("%d ",arrayIn[i]);
}
printf("\n");
#endif
return 0;
}
2. 结果
分享到:
相关推荐
C语言 冒泡法排序 C语言 冒泡法排序 C语言 冒泡法排序 C语言 冒泡法排序 C语言 冒泡法排序 C语言 冒泡法排序
7-5 冒泡法排序之过程冒泡法排序之过程冒泡法排序之过程冒泡法排序之过程冒泡法排序之过程冒泡法排序之过程冒泡法排序之过程冒泡法排序之过程冒泡法排序之过程冒泡法排序之过程冒泡法排序之过程冒泡法排序之过程冒泡...
冒泡排序法C#实现冒泡排序法C#实现冒泡排序法C#实现冒泡排序法C#实现冒泡排序法C#实现冒泡排序法C#实现冒泡排序法C#实现冒泡排序法C#实现冒泡排序法C#实现冒泡排序法C#实现冒泡排序法C#实现冒泡排序法C#实现冒泡排序...
数据结构课程的作业,著名的冒泡排序法,关于数组的
本人用了C#开发出选择排序法 ,冒泡排序法 ,插入排序法算法。希望能为C#语言的学习者带来一些益处。不要忘了,学语言要花大力气学数据结构和算法。
选择排序法与冒泡排序法——C语言PPT学习教案.pptx
在C#环境下使用冒泡排序法对一位数组进行排序
排序问题(选择法排序, 冒泡法排序, 合并法排序),VB6.0源代码编写
指针冒泡选择排序,程序简洁明了,易于理解,适合初学者学习理解
这一个原创C语言编写的数组大小排序法,包括插入法和冒泡法.通过学习它的思想,把握这两种基本的算法,达到举一反三的效果。
冒泡排序法改进前后的比较,比较了其优点及缺点
初学LabelView写的冒泡排序。 随机产生数组元素,并进行冒泡排序。
java 冒泡排序法 java 冒泡排序法
java 冒泡排序法 PPT文档java 冒泡排序法 PPT文档java 冒泡排序法 PPT文档java 冒泡排序法 PPT文档
分别是用冒泡排序和选择排序方法实现了数组的排序
冒泡排序法,冒泡排序法
C语言冒泡排序法PPT课件.pptx
VB 冒泡法排序 VB 冒泡法排序 VB 冒泡法排序
一个简单的冒泡排序法,可以实现简单排序。利用比较交换的方法。
编写程序实现经典的冒泡排序法 本程序中以初始化过的数组为例