在一组地址连续的存储单元中,即以数组作为存储结构。在这种情况下,
排序过程是对数据本身进行物理重排,即通过关键字之间的比较判断,将
数据移到合适的位置。另一种存储方式是以链表作为存储结构,排序过程
中无须移动数据,仅需修改指针即可。
以数组为例,每个数组元素都对应存储一个数据。如下图所示,存储在
数组元素d[0]中的数据是23,d[1]中存储的是20,等等。
另一种写法:
n=len(a)
flag=True
#flag值为True表示一遍加工中发生过交换
i=1
while i<=n-1 and flag==True:
flag=False
for j in range(n-1,i-1,-1):
if a[j]<a[j-1]:
a[j],a[j-1]=a[j-1],a[j]
d
23
20
13
18
14
11
0
1
2
3
4
5
如果对数组d中的6个数据按升序进行排序,即调整数组d中所有数据的存
储位置,使最小的数据存储在d[0]中,次小的数据存储在d[1]中……最大
的数据存储在d[5]中。数组d中的所有数据满足:d[0]≤d[1]≤d[2]≤d[3]
≤d[4]≤d[5]。
这里两个数组元素的比较:d[i]≤d[j](i=0,1,…,5;j=0,1,…5),指的是d[i]中
原始数据
第1遍完成后的数据为
第2遍完成后的数据为
第3遍完成后的数据为
A.21,18,16,15,9,7,5,3
B.21,18,16,15,9,3,7,5
C.21,18,16,15,9,7,3,5