常用的简单排序
一、冒泡排序
冒泡排序,顾名思义就是像泡泡一样,从最底层冒到水面。
代码:
void bubblesort(int* array,int size)
{
int i,j;
int flag = 0;
for (i = size;i>=1;i--)
{
for (j = 0;j<i-1;j++)
{
if(array[j] > array[j+1])
{
swap(&array[j],&array[j+1]);
flag = 1;
}
}
if(flag == 0)
{
break;
}
}
}
循环里面flag的作用就是,在一次循环里面检测,本次循环有没有交换数据,如果没有就说明,此时数据
已经有序了当数据有序的时候,就可以跳出循环。
二、选择排序
选择排序的思想就是每次选择一个最小的,放到序列的最前面,那么当循环完成的时候,数据有序
代码:
void selectsort(int* array,int n)
{
int min = 0;
int i,j;
for (i = 0;i<n;i++)
{
min = i;
for (j = i;j<n;j++)
{
if(array[j] < array[min])
{
min = j;
}
}
if(min!=i)
{
swap(&array[min],&array[i]);
}
}
}
内层循环,如果找到比 min标记的数还要小的,就用min标记,一次循环下来,min标记的就是本趟排序中最小的,
然后在用外层循环缩小遍历的范围即可
三、直接插入排序
直接插入排序的思想:把要排序数据分成两部分,前部分是有序的,后面是无序的,每次用无序部分的第一
个值,放到前面有序部分,然后在有序的部分进行调整。
代码:
void insertsort(int* array,int n)
{
int i,j;
int temp = 0;
for (i =1;i<n;i++)
{
temp = array[i];
for (j = i-1; j>=0 && array[j] > temp;j--)
{
array[j+1] = array[j];
}
array[j+1] = temp;
}
}
Tip:仓促整理,还有很多可以改进的地方欢迎指正。