C.选择排序:
procedure sort;
var i,j,k:integer;
第1题:
四、排序算法
A.快速排序:
procedure qsort(l,r:integer);
var i,j,mid:integer;
begin
i:=l;j:=r; mid:=a[(l+r) div 2]; {将当前序列在中间位置的数定义为中间数}
repeat
while a[i]<mid do inc(i); {在左半部分寻找比中间数大的数}
while a[j]>mid do dec(j);{在右半部分寻找比中间数小的数}
if i<=j then begin {若找到一组与排序目标不一致的数对则交换它们}
swap(a[i],a[j]);
inc(i);dec(j); {继续找}
end;
until i>j;
if l<j then qsort(l,j); {若未到两个数的边界,则递归搜索左右区间}
if i<r then qsort(i,r);
end;{sort}
第2题:
D. 冒泡排序
procedure bubble_sort;
var i,j,k:integer;
begin
for i:=1 to n-1 do
for j:=n downto i+1 do
if a[j]<a[j-1] then swap( a[j],a[j-1]); {每次比较相邻元素的关系}
end;
第3题:
【填空题】以下程序的运行结果是【1】,其算法是【2】。 main() {int a[5]={5,10,-7,3,7},i,t,j; sort(a); for(i=0;i<=4;i++) printf("%3d",a[i]); } sort(int a[]) {int i,j,k; for(i=0;i<4;i++) for(j=0;j<4-i;j++) if(a[j]>a[j+1]) {t=a[j];a[j]=a[j+1];a[j+1]=t;} }
第4题:
B.插入排序:
思路:当前a[1]..a[i-1]已排好序了,现要插入a[i]使a[1]..a[i]有序。
procedure insert_sort;
var i,j:integer;
begin
for i:=2 to n do begin
a[0]:=a[i];
j:=i-1;
while a[0]<a[j] do begin
a[j+1]:=a[j];
j:=j-1;
end;
a[j+1]:=a[0];
end;
end;{inset_sort}
第5题:
下面程序的功能是 : 将 N 行 N 列二维数组中每一行的元素进行排序 , 第 0 行从小到大排序 , 第 1 行从大到小排序,第 2 行从小到大排序,第 3 行从大到小排序,例如:

define N 4
void sort(int a[][N])
{ int i, j, k, t;
for (i=0; i<N;i++)
for (j=0; j<N-1:j++)
for (k= 【 13 】 ; k<N;K++)
/* 判断行下标是否为偶数来确定按升序或降序来排序 */
if ( 【 14 】 ? a[i][j]<a[i][k]); a[i][j]>a[i][k])
{ t = a[i][j];
a[i][j]=a[i][k];
a[i][k] = t;
}
}
void outarr(int a[N][N])
{ …… }
main()
{ int aa[N][N]={{2,3,4,1},{8,6,5,7},{11,12,10,9},{15,14,16,13}};
outarr(aa); /* 以矩阵的形式输出二维数组 */
sort(aa);
outarr(aa);
}