排序算法
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;
}
}
点击查看代码
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;
}
}
}
}
浙公网安备 33010602011771号