## 页首HTML代码 ```html

排序算法

数据结构

排序算法

·插入排序

插入排序的思路就是从右侧的未排序区域内取出一个数据,然后将它插入到已排序区域内合适的位置上。

image

/****************************************************************************
 *
 * function name     :InsertSort
 * function          : 插入排序  把无序序列中元素依次插入到有序序列中,一般是从有序序列的尾部开始比较
 * parameter         :
 *                    
 *                    @bufsize
 * Return results    : 返回成功或者失败。
 * note              : None
 * author            : tongyaqi1110@163.com
 * date              : 2024-05-01
 * version           : V1.0
 * revision history  : None
 *
 ****************************************************************************/

void InsertSort(int buf[10],int bufsize)
{
	int temp = 0; 				//用于备份当前待插入元素的值
	int current_prev = 0; 	//备份待插入元素的下标

	//1.可以假设把数组中的第一个元素作为有序序列的元素,剩下的元素作为无序序列
	for (int i = 1; i < bufsize; ++i)
	{
		//2.先备份当前待插入元素的值
		temp = buf[i]; 

		//3.把当前待插入元素和有序序列中的元素依次进行比较,从有序序列尾部开始
		for (int j = i-1; j >= 0; j--)
		{
			//当前待插入元素的值 小于 待插入元素的直接前驱的元素的值
			if (temp < buf[j])
			{
				current_prev = j; 	//备份当前待插入元素的直接前驱的下标
				buf[j+1] = buf[j]; 	//后移	
			}
			else
			{
				current_prev = j+1;
				break;
			}
		}

		//4.把待插入元素插入到指定位置
		buf[current_prev] = temp;
	}
}

·冒泡排序

用第一个元素和第二个元素进行比较,如果第一个元素的值大于第二个元素则两者位置互换,否则不交换。然后第二个元素和第三个元素比较.......最后序列中最大的元素被交换到了序列的尾部,这样就完成了一轮交换,经过n轮交换之后,就可以得到一个有序序列。

image

/****************************************************************************
 *
 * function name     : bubbleSort
 * function          : 冒泡排序  从序列右边开始比较相邻两个数字的大小,再根据结果交换两个数字的位置
 * parameter         :
 *                    
 *                    @bufsize
 * Return results    : 返回成功或者失败。
 * note              : None
 * author            : tongyaqi1110@163.com
 * date              : 2024-05-01
 * version           : V1.0
 * revision history  : None
 *
 ****************************************************************************/

void bubbleSort(int buf[],int bufsize)
{
	
	int temp = 0; //为了临时存储交换值

	//1.循环比较元素,需要比较n轮
	for (int n = 1; n < bufsize; ++n)
	{
		//2.每轮需要比较m次
		for (int m = 0; m < bufsize-n; ++m)
		{
			//3.数组元素两两之间进行比较交换 buf[0] buf[1]   buf[1] buf[2]
			if (buf[m] > buf[m+1])
			{
				temp  	= buf[m];  //备份前一个
				buf[m]	= buf[m+1];//把后面交换到前面
				buf[m+1]= temp;	   //把前面交换到后面
			}
		}
	}
}

posted @ 2024-05-01 20:52  一面小镜子  阅读(12)  评论(0)    收藏  举报