外包工

学 JAVA 学 OO

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  21 随笔 :: 0 文章 :: 0 评论 :: 0 Trackbacks
1         汽泡排序法Bubble Sort)︰如同汽泡由下逐漸往上升,越大的汽泡上升越快。
說明:
假設現有資料如下,欲將其由小排列至大。(若有N筆資料,則共需N-1回合)
      小  => => => 排序方向 => => => 大
原始資料
3
2
5
4
1
第一回合
3
2
5
4
1
3比2大,故對調
2
3
5
4
1
3與5不變
2
3
5
4
1
5比4大,故對調
2
3
4
5
1
5比1大,故對調
2
3
4
1
5
5為最大值,排好了!
第二回合
2
3
4
1

5

2與3不變
2
3
4
1

5

3與4不變
2
3
4
1

5

4比1大,故對調
2
3
1
4

5

4為次大值,排好了!
第三回合
2
3
1
4

5

2與3不變
2
3
1
4

5

3比1大,故對調
2
1
3
4

5

3為第三大值,排好了!
第四回合,完成!
2
1
3
4

5

2比1大,故對調
1
2
3
4

5

2為第四大值,完成排序!
 
範例程式碼:
const int n=5;
int data[n]={3,2,5,4,1};
for(int i=0;i<n-1;i++)      //共執行n-1回合
  for(int j=0;j<n-1-i;j++)  //每回合執行n-1-i次比較
      if(data[j]>data[j+1]){  //如果左邊數字大於右邊數字,就進行交換
       int tmp=data[j];
       data[j]=data[j+1];
       data[j+1]=tmp;
     }
 
2    插入式排序法(Insertion Sort)
      將未排序的數字往前插入到合適的位置,類似玩撲克牌時的整牌方式。
說明:
      小===== 排序方向 ====>大
原始資料
3
2
5
4
1
第一回合
3
2
5
4
1

32對調

2
3
5
4
1

第一回合完成

第二回合
2
3
5
4
1

因5比3大,故35不變

2
3
5
4

1

第二回合完成

第三回合
2
3
5
4

1

54對調

2
3
4
5
1

因4比3大,故不必再調動

第三回合完成

第四回合,完成!
2
3
4
5
1

51對調

2
3
4
1
5
41對調
2
3
1
4
5
31對調
2
1
3
4
5
21對調
1
2
3
4
5

完成排序!

 
範例程式碼:
void insertion_sort(int data[],int size){
      for(int i=1;i<size;i++){   //共執行size-1回合
        int j=i-1;        
        while(j>=0&&data[j]>data[j+1]){
             int tmp=data[j+1];
             data[j+1]=data[j];
             data[j]=tmp;
             j=j-1;            
        }
    }    
}
posted on 2010-10-23 09:40 外包工 阅读(204) 评论(0)  编辑  收藏 所属分类: C语言程式设计

只有注册用户登录后才能发表评论。


网站导航: