2012年5月3日 星期四

插入排序(未整理)


Insertion Sort( 插入排序 )
主要概念:
陣列內容: 7,3,5,6,1
指定比較的陣列元素為,從陣列開頭的第二個位置,開始比較,指定的陣列位置會不斷的遞增。
如果,指定的陣列元素小於目前指到的陣列元素,就將目前指到的陣列元素放在指定陣列元素的位置。
依序做到條件結束。
範例:
7,3,5,6,1(指定比較為第2個位置)
->3,7,5,6,1

3,7,5,6,1(指定比較為第3個位置)
->3,5,7,6,1

3,5,7,6,1(指定比較為第4個位置)
->3,5,6,7,1

3,5,6,7,1(指定比較為第5個位置)
->3,5,6,,7
->3,5,,1,6,7
->3,,5,6,7
->1,3,5,6,7



程式碼:


#include <cstdlib>
#include <cstdio>
#include <iostream>
#include <iomanip>
using namespace std;
int main(){

  int a[5]={12,2,4,1,0};
 
  for(int i=0; i<5; i++)
cout << setw(3) << a[i] <<  "   ";
  cout << endl;
  for(int i=1; i<5; i++){
    int tmp =a[i];
int j;
for(j=i-1; j>=0 && tmp<a[j]; j--){
 a[j+1]=a[j];
 cout << "chg = " << setw(3) << a[j+1];
}
cout << endl;

a[j+1]=tmp;
cout << a[j+1] << endl;
for(int i=0; i<5; i++)
 cout << setw(3) << a[i] <<  "   ";
cout << endl;
  }

  for(int i=0; i<5; i++)
cout << setw(3) << a[i] <<  "   ";
  cout << endl;

  system("pause");
  return 0;
}

沒有留言:

張貼留言