冒泡排序
void BubbleSort(Element Array[], ArraySize Count)//一趟后,把最小的数放到最前面
...{
ArraySize i,j;
Element temp;
for (i = 0; i < Count - 1; i++)
for(j = Count - 1; j > i; j--)//从后往前找最小的数
if(Array[j] < Array[j-1])
...{
temp = Array[j];
Array[j] = Array[j-1];
Array[j-1] = temp;
}
}
void BubbleSort2(Element Array[], ArraySize Count) // Improve performance
...{
ArraySize i,j;
Element temp;
int flag;
for (i = 0; i < Count - 1; i++)
...{
flag = 0;
for(j = Count - 1; j > i; j--)
if(Array[j] < Array[j-1])
...{
temp = Array[j];
Array[j] = Array[j-1];
Array[j-1] = temp;
flag = 1;
}
if (flag == 0) break;
}
}
...{
ArraySize i,j;
Element temp;
for (i = 0; i < Count - 1; i++)
for(j = Count - 1; j > i; j--)//从后往前找最小的数
if(Array[j] < Array[j-1])
...{
temp = Array[j];
Array[j] = Array[j-1];
Array[j-1] = temp;
}
}
void BubbleSort2(Element Array[], ArraySize Count) // Improve performance
...{
ArraySize i,j;
Element temp;
int flag;
for (i = 0; i < Count - 1; i++)
...{
flag = 0;
for(j = Count - 1; j > i; j--)
if(Array[j] < Array[j-1])
...{
temp = Array[j];
Array[j] = Array[j-1];
Array[j-1] = temp;
flag = 1;
}
if (flag == 0) break;
}
}
插入排序
void InsertSort(Element d[], ArraySize n)
...{
ArraySize i,j;
Element t;
for(i=1; i<n; i++)
...{
t = d[i];
if(d[i] < d[i-1])
...{
for(j=i-1; j>=0 && t<d[j]; j--)
d[j+1] = d[j];
d[j+1] = t;
}
}
}
...{
ArraySize i,j;
Element t;
for(i=1; i<n; i++)
...{
t = d[i];
if(d[i] < d[i-1])
...{
for(j=i-1; j>=0 && t<d[j]; j--)
d[j+1] = d[j];
d[j+1] = t;
}
}
}
快速排序
void QuickSort(Element Array[], ArraySize Count)
...{
QuickSortRange(Array,0,Count - 1);
}
ArraySize Partition(Element Array[], ArraySize Low, ArraySize High)
...{
Element v,temp;
ArraySize vPos;
vPos = Low;
v = Array[vPos];
Low++;
while(1)
...{
while((High > Low) && (Array[High] > v)) High--;
while((Low < High) && (Array[Low] <= v)) Low++;
if(Low >= High) break;
temp = Array[Low];
Array[Low] = Array[High];
Array[High] = temp;
Low++;
High--;
}
if(Array[Low] > v) Low--;
if(vPos != Low)
...{
temp = Array[Low];
Array[Low] = Array[vPos];
Array[vPos] = temp;
}
return Low;
}
void QuickSortRange(Element Array[], ArraySize Low, ArraySize High)
...{
ArraySize Middle;
if(Low < High)
...{
Middle = Partition(Array, Low, High);
QuickSortRange(Array,Low,Middle - 1);
QuickSortRange(Array,Middle + 1,High);
}
}
选择排序
void SelectSort(Element d[], ArraySize n)
...{
int i, j, k, t;
for(i = 0; i<n-1; i++)
...{
k = i;
for(j=i+1;j<n;j++)
...{
if(d[j]<d[k])
k = j;
}
if(k!=i)
...{
t = d[i];
d[i] = d[k];
d[k] = t;
}
}
}
...{
int i, j, k, t;
for(i = 0; i<n-1; i++)
...{
k = i;
for(j=i+1;j<n;j++)
...{
if(d[j]<d[k])
k = j;
}
if(k!=i)
...{
t = d[i];
d[i] = d[k];
d[k] = t;
}
}
}
堆排序
void BuildStock(Element Array[], ArraySize Count)
...{
long Num = Count/2, temp, i;
if(2*Num == Count)
...{
if(Array[Num-1]<Array[Count-1])
...{
temp = Array[Num-1];
Array[Num-1] = Array[Count-1];
Array[Count-1] = temp;
}
}
else
...{
if(Array[Num-1]<Array[Count-2] || Array[Num-1]<Array[Count-1])
...{
if(Array[Count-2]>Array[Count-1])
...{
temp = Array[Count-2];
Array[Count-2] = Array[Num-1];
Array[Num-1] = temp;
}
else
...{
temp = Array[Count-1];
Array[Count-1] = Array[Num-1];
Array[Num-1] = temp;
}
}
}
for(i=Num-1; i>0; i--)
...{
if(Array[i-1]<Array[i*2-1] || Array[i-1]<Array[i*