關於直接插入排序演算法的Bug

2021-07-10 07:35:41 字數 756 閱讀 2429

直接插入排序,其主要思想是把無序的序列數插入乙個有序序列中,簡單地打個形象的比方,在打牌時,你手中已經有3、4、6這幾張牌,再摸牌,這時抽中一張5,那麼按照順序就把5插入4和6中間,隨後,也是一樣,把摸到的牌整齊有序地排列起來。

**如下:

#include 

void insertsort(int a, int n)

a[j+1] = temp;}}

}void main()

; int a[10] = ;

printf("已知陣列: ");

for(int k = 0; k<10; k++)

printf("%d",a[k]);

printf("\n");

insertsort(a, 10);

printf("排序之後的陣列:");

for(int x = 0; x<10; x++)

printf("%d",a[x]);

printf("\n");

}

在執行以上**的過程中,我隨機敲出的十個整數,發現執行結果卻差強人意。當我輸入陣列int a[10] = 時,程式能夠很好的進行排序,但是當我把0放到後面時,即int a[10] = ,執行結果卻出現了差錯。正確序列應該是:0123456789,但是卻顯示出:12345678109。一開始我認為是**敲錯了,於是我反反覆覆檢查了許多遍,**是很規範的,我想一定是上面的演算法有bug。

個人能力有限,希望看到這片文章的讀者們一起來**一下。

直接插入排序演算法

直接插入演算法 有乙個已經有序的資料序列,要求在這個已經排好的資料序列中插入乙個數,但要求插入後此資料序列仍然有序,這個時候就要用到一種新的排序方法 插入排序演算法,插入排序的基本操作就是將乙個資料插入到已經排好序的有序資料中,從而得到乙個新的 個數加一的有序資料,演算法適用於少量資料的排序,時間複...

直接插入排序演算法

撲克牌是我們幾乎每個人都可能從事過的遊戲。而最基本的撲克玩法都是一邊摸牌,一邊理牌。假如我們拿到了這樣一手牌,如圖9 5 1。啊,似乎是同花順呀,別急,我們得理一理順序才知道是否是真的同花順。請問,如果是你,應該如何理牌呢?應該說,哪怕你是第一次玩撲克牌,只要認識這些數字,理牌的方法都是不用教的。將...

直接插入排序演算法

每次將乙個待排序的記錄按其關鍵字的大小插到前面已經排序的序列中的適當位置,直到全部記錄插入完畢為止。第一趟比較前兩個數,然後把第二個數按大小插入到有序表中 第二趟把第三個資料與前兩個數從後向前掃瞄,把第三個數按大小插入到有序表中 依次進行下去,進行了 n 1 趟掃瞄以後就完成了整個排序過程。將待插入...