快速排序、插入排序和选择排序
快速排序是目前使用较好的排序算法,它是由C.A.Hoare发明并命名的。快速
排序基本算法思想:通过一次分割,将无序序列分成两部分,其中前一部分的元
素值均不大于后一部分的元素值。然后对每一部分利用同样的方法进行分割,这
个过程一直做到每一个子序列的长度小于某个值m为止。
对序列p的分割过程: 首先,在序列的第一个、中间一个及最后一个元素中
选取中项,得p(k),然后设置两个指针i和j分别指向序列的起始和最后的位置.
Status Quick_Sort(ElemType A[],int left,int right){
tmp=A[(left+right)/2];
do{
while(A[i]
if(i<=j){
swap(A[i],A[j]);
i++;
j--;
}
}while(i<=j);
if(left
A[j+1]=A[j];
j–;
}
A[++j]=tmp;
}
return 1;
}
===================================================================
选择排序的基本思想是对待排序的记录序列进行n-1遍的处理,第i遍处理是将A[i..n]中最小者与A[i]交换位置。这样,经过i遍处理之后,前i个记录的位置已经是正确的了。
选择排序算法可实现如下:
Status Selection_Sort(List A);
len=ListLength(A);
for(i=0;i