冒泡排序
思想: 相邻两个元素比较大小,将最大或最小的依次放到最后
伪代码
void Bubble_Sort(ElementType A[], int N)
{
for(int p = N-1; P >= 0; P--)
{
flag = 0;
for(int i = 0; i < p; i++)
{
if(A[i] > A[i+1])
{
swap(A[i], A[i+1]);
flag = 1; // 标记发生了交换
}
}
if(flag == 0) break;// 全程无交换
}
}
插入排序
思想:插入一个数找到其对应的位置
伪代码:
void Insertion_Sort(ElementType A[], int N)
{
for(P = 1; P < N; P++)
{
Tmp = A[p]; // Tmp 下一个数
for(int i = p; i>0 && A[i-1]>Tmp; i--)
A[i] = A[i-1]; //移出空位
A[i] = Tmp;// 新的数入位
}
}
堆排序
初始各元素的位置
将最大的元素调整到最下面,然后继续调整剩下的
伪代码:
void Heap_Sort(ElementType A[], int N)
{
for(int i = N/2; i >= 0; i--) // 建立最大堆
PercDown(A, i, N);// 向下过滤的子函数 i->根结点所在的位置 N->当前这个堆一共有多少元素
for(int i = N-1; i > 0; i--)
{
swap(&A[0], &A[i]);
PercDown(A, 0, i); // 0->根结点 i->当前这个堆一共有多少元素
}
}
待更新。。。