插入排序 合併排序 堆排序和快速排序

2022-08-25 11:27:23 字數 1920 閱讀 3302

1 *插入排序

2 *時間複雜度o(n2)

3 *@param array原地排序演算法

4 */

5public

void insertsort(int

array)

13     array[position] =present;14}

15}1617

1819

/**20

21* 合併排序

22* o(nlogn)

23*

@param

array

24*

@param

left 第乙個索引

25*

@param

right 最後乙個索引

26*/

27public

void mergesort(int array,int left,int

right)34}

3536

public

void merge(int array,int left,int middle,int

right)

42for(int i=0;i)

45int l=0,r=0,k=left;

46for(;k<=right&;&;l)else54}

55while(l60   

while(r6667

6869

/**70

* 堆排序

71* 原地排序且o(nlogn)

72*

@param

array

73*/

74public

void heapsort(int

array)82}

83/**

84* 構建最大堆

85*

@param

array

86*/

87public

void buildheap(int

array)91}

9293

/**94

* 95

* @param

array 陣列

96*

@param

index 陣列中的索引

97*

@param

length 樹中元素個數

98*/

99public

void heapify(int array,int index,int

length)

109if((2*present+2)largest)

113if(largest_index!=present)else

120}

121   array[present]=value;

122}

123124

125126

/**127

* 最壞時間o(n2)----在陣列已經排好序時發生

128* o(nlogn)

129*

@param

array

130*

@param

p131

* @param

r132

*/133

public

void quicksort(int array,int p,int

r)139

}140

141public

int partition(int array,int p,int

r)151

}152   exchange(array,i+1,r);

153return i+1;

154}

155156

public

void exchange(int array,int p,int

q)

插入排序 合併排序 堆排序和快速排序

插入排序 時間複雜度o n2 param array原地排序演算法 public void insertsort int array array position present 合併排序 o nlogn param array param left 第乙個索引 param right 最後乙個索引...

插入排序,快速排序,堆排序,歸併排序

插入排序 void insert sort int arry,int length 快速排序 int quick adj int arry,int low,int high else if arry high low 2 arry low arry high low 2 arry high arry...

插入排序 歸併排序 堆排序

include void insertion sort int arr,int len arr j 1 temp int main int n 5 insertion sort a,n for int i 0 iprintf d a i includevoid merge sort recursiv...