冒泡、选择排序法

今天在论坛被问到冒泡排序,索性做个笔记:

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. 结果

冒泡、选择排序法_第1张图片

你可能感兴趣的:(冒泡、选择排序法)