冒泡排序
假设待排序表长为n,从后向前(或从前往后)两两比较相邻元素的值,若为逆序,则交换他们,直到序列比较完,这是一趟冒泡排序,结果是将最小的元素交换到待排序列的第一个位置。下一趟排序的时候,前一趟确定的最小元素不在参与比较,待排序列减少一个元素,每趟冒泡排序的结果是把序列中的最小元素放到了序列的最终位置,……,这样最多做n-1趟冒泡就能把所有的元素排好序。
void BubbleSort(ElemType A[], int n)
{
//用冒泡排序将序列A中的元素按从小到大进行排列
for(i=0; i<n-1; i++)
{
flag=false;
for(j=n-1; j>i; j--)
{
if(A[j-1].key>A[j].key)
{
swap(A[j-1], A[j]);
flag=true;
}
}
if(flag==false)
return ;
}
}
时间复杂度:o(n^2)
稳定排序