void InsertSort(SeqList &seq)
{
int n = GetSize(seq);
for(int i = 1;i<n;++i)
{
if(seq.data[i] < seq.data[i-1])
{
ElemType tmp = seq.data[i];
int j = i - 1;
do
{
seq.data[j+1] = seq.data[j];
--j;
}while(j >= 0 && tmp < seq.data[j]);
seq.data[j+1] = tmp;
}
}
}
void SelectSort(SeqList &seq)
{
int n = GetSize(seq);
for(int i = 0;i<n-1;++i)
{
int minpos = i;
for(int j = i+1;j<n;++j)
{
if(seq.data[minpos] > seq.data[j])
{
minpos = j;
}
}
if(i != minpos)
{
Swap(seq.data[minpos],seq.data[i]);
}
}
}
void FilterDown(SeqList &seq,int start,int end)
{
int i = start,j = 2*i+1;
ElemType tmp = seq.data[i];
while(j <= end) //
{
if(j < end && seq.data[j] < seq.data[j+1]) ++j; // Max
if(tmp >= seq.data[j]) break;
seq.data[i] = seq.data[j];
i = j;
j = i*2+1;
}
seq.data[i] = tmp;
}
void HeapSort(SeqList &seq)
{
int end = seq.cursize - 1;
int pos = (end-1)/2;
// makeheap
while(pos >= 0)
{
FilterDown(seq,pos,end);
--pos;
}
for(int i = seq.cursize-1; i>0;--i)
{
Swap(seq.data[0],seq.data[i]);
FilterDown(seq,0,i-1);
}
}
插入排序,选择排序,堆排序代码
猜你喜欢
转载自blog.csdn.net/qq_40738945/article/details/86518332
今日推荐
周排行