选择排序:
void SelectionSort(int array[], int len) // O(n*n)
{
int i = 0;
int j = 0;
int k = -1;//k用于标识最小值位置
for(i=0; i<len; i++)//比较i趟,核心步骤
{
k = i;
for(j=i; j<len; j++)//通过for循环查找最小值
{
if( array[j] < array[k] )
{
k = j;
}
}
swap(array, i, k);//找到最小值后,放到i位置上
}
}
插入排序:
void InsertionSort(int array[], int len) // O(n*n)//比较次数相对于选择排序少一点,平均复杂度低一点
{
int i = 0;
int j = 0;
int k = -1;
int temp = -1;
for(i=1; i<len; i++)//从第一个元素开始,第零个元素作为初始序列
{
k = i;
temp = array[k];//目前待插入的元素
for(j=i-1; (j>=0) && (array[j]>temp); j--)//在有序序列中查找应插入的位置,任意一个元素都可以作为有序序列
{
array[j+1] = array[j];//向后移动
k = j;//应插入的位置
}
array[k] = temp;
}
}
冒泡排序:
void BubbleSort(int array[], int len) // O(n*n)
{
int i = 0;
int j = 0;
int exchange = 1;//标记变量exchange,貌似可要可不要
for(i=0; (i<len) && exchange; i++)//进行了交换才能继续,否则可以结束了
{
exchange = 0;
for(j=len-1; j>i; j--)//开始冒泡了
{
if( array[j] < array[j-1] )
{
swap(array, j, j-1);
exchange = 1;
}
}
}
}