一、插入排序:
主要分为两个部分:1、移动数组 2、插入数据
void insertSort(int* a,int n)
{
int i,j,temp;
for(i = 1;i < n;i++)
{
temp = a[i];
j = i-1;
while( j >= 0 && a[j] > temp)
{
a[j+1] = a[j];
j--;
}
a[j+1] = temp;
}
}
二、冒泡排序:
void bubbleSort(int* a,int n)
{
int i,j;
bool flag = 1;
for(j = 0;flag;j++)
{
flag = 0;
for(i = 1;i<n-j;i++)
{
if(a[i]<a[i-1])
{
a[i] = a[i] + a[i-1];
a[i-1] = a[i] - a[i-1];
a[i] = a[i] - a[i-1];
flag = 1;
}
}
}
}
使用flag主要目的是记录是否还需要继续排序,当一个原始数组前面的数据都是排好序的情况下,有flag的程序会比没有flag的程序要节省时间。
三、选择排序法:
选择排序是在未完成排序的元素中找到最小的元素,然后再进行数据交换。
void selectSort(int* a,int n)
{
int i,j,min;
for(i = 0;i < n-1;i++)
{
min = i;
for(j = i+1;j < n;j++)
{
if(a[j] < a[min])
{
min = j;
}
}
a[i] = a[i] + a[min];
a[min] = a[i] - a[min];
a[i] = a[i] - a[min];
}
}