插入排序和选择排序

来源:互联网 发布:晶体结构优化有什么用 编辑:程序博客网 时间:2024/05/21 18:40

插入排序模拟事例:

 

待排序的数组时桌面上的一叠扑克牌。现在要对其进行排序:

在桌面上随便抽一张放在手上,很明显一张牌已拍好序。

在桌面上再随便抽一张上来,这一次需要和手上的牌进行比较,看是放在牌的前面还是后面。

在桌面上再随便抽一张牌上来。这次和桌面上也拍好序的牌比较,从后到前的比较。如果有大于新抽上来的牌的话,那么大于的牌位置就要发生改变了。

 

伪代码:

A [p,r]

for(j = p + 1;j < r;++j)

    i = j - 1;

    key = A[j];

    while(i > 0 && A[i] > key)

          A[i + 1] = A[i]; 

          i = i - 1;

    A[i + 1] = key;

选择排序:

待排序数组是桌面上的一叠扑克牌。现对其进行排序:

在桌面上找出最小的一张扑克牌,放在手上。

再在桌面上找第二小或相等的放在手上,如此继续,由于每次选的牌是由小到大,所以放在手上的牌位置不会在发生变化了。

A[p,r]

 

for(i = p;i < r;++i)

   key = A[i];

   index = i;

   for(j = i + 1;j < r;++j)

         if key > A[j]

             index = j;

             key = A[j];

 

   tmp = A[i];

   A[i] = key;

   A[index] = tmp;

 

原创粉丝点击