排序算法

1.插入排序:
插入排序是一种简单快速的排序算法,就是把一组无序的数据,以第一个数据为准,假设第一个数据是经过排序过的,把第二个数据和排好的数据进行比较,注意插入排序是从后向前进行比较,如果此时有一个新元素,则从已经排序的序列的尾部向前进行比较,如果排序过的序列的元素值大于新元素,则把新元素插入到该元素的前面。
核心思想:
把数组分为有序和无序两部分,从无序中抽出数据与与有序数据比较,小于则置于左侧反之右侧。
设计思路:
1.把数组下标为零的元素作为有序元素的第一个元素,其余元素作为无序元素。
2.记录无序序列第一个元素的数值(即抽出这个元素,空出来一个位置),将无序序列的第一个元素与有序序列的最后一个元素进行比较。
3.若无序序列的元素小于有序序列的元素,将有序序列的元素向后移一格,无序序列的元素与有序序列的倒数第二个元素进行比较依次类推。
4.如果大于则放在有序序列元素后面的位置。
5.最后完成插入动作。

点击查看代码
void InsertSort(int buf[10],int size)
{
	int temp = 0;
	int sub = 0;
	//从一开始无序序列与有序序列递进 
	for(int i = 1;i < size;i++)
	{
		//备份该元素的数据 
		temp = buf[i]; 
		//如果无序序列中该元素小于有序序列最后一个元素
		for(int j = i-1;j >= 0;j-- )
		{ 
			if(temp < buf[j])
		{
			//记录被比较元素前驱元素下标
			sub = j;
			//该元素向前移动一格 
			buf[j+1] = buf[j]; 
		}
		else
		{
			//如果待插入元素大于比较元素放在他后面的位置
			sub = j+1;
			break;
		}
		}
		//把待插入元素插入指定位置
		buf[sub] = temp;
	}
}
2.冒泡排序 冒泡排序也被称为起泡排序,该排序算法的原理就是经过一系列的交换实现的,也就是用第一个元素和第二个元素进行比较,如果第一个元素的值大于第二个元素则两者位置互换,否则不交换。然后第二个元素和第三个元素比较.......最后序列中最大的元素被交换到了序列的尾部,这样就完成了一轮交换,经过n轮交换之后,就可以得到一个有序序列。 设计思路: 1.确定需要比较多少轮每轮要比较多少次。 2.以轮数为第一个循环嵌套比较次数的循环。 3.如果第一个元素的值大于第二个元素的值则两者交换位置
点击查看代码
void bubblesort(int buf[10],int size)
{
    int temp = 0;//中间变量
    //轮数为n
    for(int n = 1;n < size;n++)
    {
        //记录交换次数
        for(int m = 0;m < size - n;m++)
        {
            if(buf[m] > buf[m + 1])
            {
                temp = buf[m];
                buf[m] = buf[m+1];
                buf[m+1] = temp;
            }
        }
    }
}
posted @ 2025-07-10 19:18  Lè_Sage  阅读(45)  评论(0)    收藏  举报