今天在论坛被问到冒泡排序,索性做个笔记:
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. 结果