遞迴形式改寫插入排序

2021-10-02 15:13:21 字數 2465 閱讀 4440

2020.2.7

13:30

思路:從第乙個值開始,向前面的插入,後面的數字在向前面插入的時

候,前面的數字一定已經排好序了,找乙個位置將這個數再放入到正確

的位置。

**演示:

public

static

void

main

(string[

] args)

; system.out.

println

("排序之前:");

for(

int i=

0;i)for

(int i=

0;i)else

}

思路:對陣列的排序=對陣列中0到倒數第二個元素排序+倒數第乙個元

素插入到這個有序的部分中去。並且,,記住每乙個遞迴的步驟:

①:找重複 ②:設引數 ③:找出口

**演示:

public

static

void

sort

(int

arr,

int k)

sort

(arr,k-1)

;//對從0到倒數第二個元素排序

int x=arr[k]

;int index=k-1;

//設定指標

while

(index>-1

&& x

) arr[index+1]

=x;//指標的邊界

}

結果:

草稿:

兩種方法比較**演示:

package lanqiaoknowledgepractise;

//插入排序

public

class

insertionsortingtest

sort

(arr,k-1)

;//對從0到倒數第二個元素排序

int x=arr[k]

;int index=k-1;

//設定指標

while

(index>-1

&& x

) arr[index+1]

=x;//指標的邊界

}//從第乙個數字開始向前插入,後面的數字在向前插入的時候,前面的數字一定已經排好序了,找乙個位置將這個數放入正確的位置

public

static

void

main

(string[

] args)

; system.out.

println

("排序之前:");

for(

int i=

0;i)for

(int i=

0;i)else}}

system.out.

println()

; system.out.

println

("排序之後:");

for(

int i=

0;i) system.out.

println

("*****************************");

int[

]arr=

; system.out.

println

("*******排序前***********************");

for(

int i=

0;i) system.out.

println()

; system.out.

println

("**************排序後****************************");

收工午休

遞迴(3) 遞迴形式進行插入排序

分析 對陣列的0 倒數第乙個排序等價於 對陣列的0 倒數第二個元素,這部分排序 然後把最後乙個元素插入到這個有序的部分中。public class 13遞迴形式進行插入排序 insertsort arr,8 for int i 0 i arr.length i static void inserts...

遞迴基礎練習之插入排序的遞迴形式

首先確定insertsort的巨集觀語義是對以陣列的0至第n索引項進行插入排序 假設要呼叫insertsort arr,n 可以得到規模更小的子問題 1.對陣列的0至第n 1索引項進行插入排序 2.將陣列的第n索引項插入到有序陣列中 聚焦函式的巨集觀語義,可以更好地寫出遞迴函式。對0至n索引項進行插...

陣列排序 3 遞迴插入排序

目錄 演算法思想 實現 時間複雜度 先將最後乙個元素插入前 n 1 個元素組成的有序陣列arr1中,整個陣列便排好序了。但是在此之前要將陣列arr1排好序 將倒數第二個元素插入前 n 2 個元素組成的有序陣列arr2中,陣列arr1便排好序了。但是在此之前要將陣列arr2排好序 將倒數第三個元素插入...