1.选择排序。
每次将最小的数,与剩余数做比较。找到更小的,做交换。
时间复杂度:O(n2)
空间复杂度:O(1)
优缺点:耗时但内存空间使用小。
void selectSort(int *p,int len) { int i, j,tmp; for(i = 0; i < len; i++) { for(j = i+1; j < len; j++) { if(p[i] > p[j]) { tmp = p[i]; p[i] = p[j]; p[j] = tmp; } } } }
2。冒泡排序
一轮比较两个相邻的数,获得一个最大的数仍在后边。
时间复杂度:O(n2)
空间复杂度:O(1)
优点:稳定。
void popupSort1(int *p,int len)
{
int i, j, tmp;
for(i = 0; i < len ; i++)
{
for(j = i; j < len -1; j++)
{
if(p[j] > p[j+1])
{
tmp = p[j];
p[j] = p[j+1];
p[j+1] = tmp;
}
}
}
}
3。插入排序
4。快速排序
5。堆排序
6。归并排序