小小c 演算法題 5 插入排序

2022-03-22 07:10:19 字數 830 閱讀 5914

插入排序是最簡單(最容易理解)的一種排序演算法。

其基本操作是將乙個數插入到已經有序的陣列中,那麼我們要做的是確定插入到什麼位置,所有在這個位置之後的數後移乙個位置,從而給這個要插入的數騰出位置。所以關鍵點是找插入位置。

最簡單的辦法,從最後乙個元素開始找,邊找邊後移,一直到找到合適的插入位置。

首先,陣列第乙個元素我們視為有序。第二個元素,跟第乙個比較排序之後,前兩個元素組成乙個有序序列。第n個元素,從前面的有序序列(n-1個元素)的最後乙個元素開始比較,直到找到合適的插入位置,插入即可,最終形成乙個有序序列。

**(c#):

static

void insertsort(int

numbers)

numbers[j] =temp;

}}

還有一種稍高效一點的方法,因為我們要插入的陣列已經是有序的了,所以可以用二分查詢找到插入位置,然後後移這個位置之後的元素,插入新值。

**(c#):

static

void binaryinsertsort(int

myarray)

if (myarray[i] }

//將插入位置後面的元素後移乙個位置,後移之前儲存要插入的值myarray[i]

int temp =myarray[i];

for (int j = i; j > low; j--)

myarray[low] =temp;}}

}

最後,從**可以看出。直接插入排序的時間複雜度是o(n*n)。雖然折半插入排序減少了關鍵字間的比較次數,但移動記錄的次數不變,所有時間複雜度仍是o(n*n)。

演算法 5 插入排序

從第乙個元素開始,該元素可以認為已經被排序 取出下乙個元素,在已經排序的元素序列中從後向前掃瞄 如果該元素 已排序 大於新元素,將該元素移到下一位置 重複步驟3,直到找到已排序的元素小於或者等於新元素的位置 將新元素插入到該位置後 重複步驟2 5 1 l 89,67,56,45,34,23,1 2d...

演算法 C 插入排序

1 排列整個陣列 void insertsort int array,int num array k key 2 排列陣列的指定區間 void insertsort int array,int start,int end array k key 演算法很重要,同時也是我比較薄弱的環節 其實是菜鳥程式...

C 插入排序演算法

原理 1 第乙個元素可以看做是已經排序好的小陣列,第二個元素和這個小陣列比較,放到合適的位置,組成新的已排序的小組數。2 第三個元素在和前面組成的新的小陣列比較,決定排在什麼位置,如此迴圈,直到結束 public static void insertatesort 定義乙個陣列 for int i ...