考研 資料結構 排序演算法

2021-10-20 22:43:25 字數 2451 閱讀 2790

#include

#include

using

namespace std;

//排序演算法(時間複雜度:最好,最壞,平均)

//插入排序

void

insert_sort

(int arr,

int n)

arr[j+1]

= temp;}}

}//折半插入排序

void

insert02_sort

(int arr,

int n)

else

}for

(j = i-

1;j>=low;j--

) arr[low]

= temp;

//插入操作}}

//希爾排序

void

shellsor

(int arr,

int n)

arr[j+d]

= arr[0]

;//插入}}

}}//氣泡排序

void

bubblesort

(int arr,

int n)}if

(tag ==

false

)return;}

}//快速排序

//本身有序的時候效率最低

//優化:對於基準的選取盡量選取中間大的

inttemptition

(int arr,

int low,

int high)

//比基準小的移到low的位置

arr[low]

= arr[high]

;//比基準小的不動,一直向左找到大於基準的元素

while

(low<=temp)

//比基準大的移到high的位置

arr[high]

= arr[low];}

//將基準元素插入的相應位置

arr[low]

= temp;

//將最後停留的位置返回

return low;

}void

quicksort

(int arr,

int low,

int high)

}//簡單選擇排序

void

selectsort

(int arr,

int n)}if

(min!=i)}}

//堆排序

void

headadjust

(int arr,

int k,

int len)

if(arr[0]

>=arr[i]

)break

;//篩選結果

else

} arr[k]

= arr[0]

;//被篩選結點的值放入最終位置

}//建立大根堆

void

buildmaxheap

(int arr,

int len)

}void

heapsort

(int arr,

int len)

}//歸併排序

int n =10;

//另外開闢的陣列,用來臨時儲存分開的陣列

int*arr02 =

newint

[n];

//合併操作

void

merge

(int arr,

int low,

int mid,

int high)

//按照兩個分開的部分第乙個數值的大小放到原陣列中

//k指的是原陣列,i,j分別指向分開的兩個部分

for(i = low,j = mid+

1,k = i;i<=mid&&j<=high;k++

)else

}//兩個部分中多出來的一部分也要放進去

while

(i<=mid)

while

(j<=high)

}void

mergesort

(int arr,

int low,

int high)

}//基數排序

intmain()

;heapsort

(arr,10)

;//0

selectsort

(arr,10)

;quicksort

(arr,0,

9);insert_sort

(arr,10)

;shellsor

(arr,10)

;//0

for(

int i =

0;i<

10;i++

)return0;

}

考研資料結構 排序

人生哪有最好,把每乙個當下做到最好,就很不錯了呀。以下以考試主要考查的重點內容為主體,講述過程以方便大家記憶為上,並不面面俱到。首先得知道排序分內部排序和外部排序。內部排序 排序整個過程中資料在記憶體中。外部排序 排序整個過程中資料會有出現在內 外存之間調動的情況。考研主要考內部排序。內部排序主要分...

資料結構 考研 快速排序

快速排序有三種寫法,平均複雜度幾乎相同。我們這裡給出最常見的那種,把第乙個元素拎出來,然後找到它該去的地方再塞進去。快速排序和氣泡排序都屬於交換排序,都屬於不穩定排序。一趟快速排序定乙個位置,並且把區間分為兩部分。int partition int arr,int i,int j 小於基準值左移 正...

資料結構 考研 拓撲排序

獲得乙個圖的拓撲排序可以有深搜和廣搜兩種途徑。深搜是逆向思維,遍歷到遞迴最深處,層層返回的時候把結點壓棧,得到的是乙個逆序拓撲序列。廣搜是正向思維,從度為 0 的結點入手,每次將度為 0 的結點入隊,直到全部遍歷。深搜 int visited 5 visited有三種狀態,未搜尋 0 搜尋中 1 搜...