1、冒泡排序的原理:
冒泡排序是将一排数据从左到右,相邻的元素进行比较。将比较过后的结果按照一定顺序排列,在将较大的或者将较小的跟下个元素进行比较,直到这轮结束。每轮比较结束都会找到序列中最大的一个或者最小的一个。这个数将从序列的最右侧冒出。
以从小到大的排序为例,第一轮比较结束后,所有数中最大的那个数将会移到最右侧。第二轮比较将不在跟最右侧的数进行比较,以此类推下去。
cone变量是用来提高代码的运行效率,在一轮中都没有发生数据的交换证明排序已完成。
#include <stdio.h>
int main()
{
int array[] = {12,8,13,9,11,25,66,39};
int i,j;
int tmp;
int len = sizeof(array) / sizeof(int);
int cone = 0;
for(i = 0; i < len - 1; i++)
{
cone = 0;
for(j = 0; j < len - 1 - i;j++)
{
if(array[j] > array[j+1])
{
tmp = array[j];
array[j] = array[j+1];
array[j+1] = tmp;
cone = 1;
}
}
if(cone == 0)
break;
}
return 0;
}
(示意代码)
2、简单选择排序的原理:
简单选择排序跟冒泡排序法非常的相似,简单选择排序法是将一排数据的第一个数据拿出来跟其它数据进行比较,比较后根据一定顺序进行排列。一轮比较结束后,所以数据中最大的或者最小的将会移到最左侧。第二轮比较将不在从第一个数据开始进行比较,以此类推下去。
#include <stdio.h>
int main()
{
int array[] = {12,8,13,9,11,25,66,39};
int i,j;
int tmp;
int len = sizeof(array) / sizeof(int);
for(i = 0; i < len -1;i++)
{
for(j = i + 1; j < len;j++)
{
if(array[i] > array[j])
{
tmp = array[j];
array[j] = array[i];
array[i] = tmp;
}
}
}
return 0;
}
(示意代码)