各種排序與查詢演算法

2021-09-27 11:53:14 字數 2524 閱讀 5267

#include

#include

#include

#define swap(a,b)

intorder_find

(int

* arr,size_t len,

int key)

return-1

;}int_binary_find

(int

* arr,size_t l,size_t r,

int key)

intbinary_find

(int

* arr,size_t len,

int key)

return-1

;}// 氣泡排序

void

bubble_sort

(int

* arr,size_t len)}if

(flag)

break;}

}// 插入排序

void

insert_sort

(int

* arr,size_t len)

arr[k]

= t;}}

// 選擇排序

void

select_sort

(int

* arr,size_t len)

if(max != i)

swap

(arr[max]

,arr[i]);

}}void

show_arr

(int

* arr,size_t len)

printf

("\n");

}void

_quick_sort

(int

* arr,size_t left,size_t right)

else

printf("%d ",arr[i]);

} printf("\n"); */

// 左右下標相遇時結束

while

(l < r)

// 在標桿的右邊尋找比它小的資料

while

(pi>= pv) r--;if

(pi// 如果沒有走出範圍,說明找到比標桿小的值

}// 還原標桿的值

arr[pi]

= pv;

//show_arr(arr,10);

if(pi-left >1)

_quick_sort

(arr,left,pi-1)

;if(right-pi >1)

_quick_sort

(arr,pi+

1,right);}

void

quick_sort

(int

* arr,size_t len)

void

creat_heap

(int

* arr,size_t root,size_t len)

if(right < len)

if(max != root)

swap

(arr[max]

,arr[root]);

}void

heap_sort

(int

* arr,size_t len)

}void

merge

(int

* arr,size_t left,size_t pi,size_t right)

while

(i<=pi) temp[k++

]= arr[i++];

while

(j<=right) temp[k++

]= arr[j++];

for(

int i=

0; i<=

(right-left)

; i++)}

void

_merge_sort

(int

* arr,size_t left,size_t right)

void

merge_sort

(int

* arr,size_t len)

intmain()

//bubble_sort(arr,1000);

printf

("----------------------\n");

insert_sort

(arr,10)

;show_arr

(arr,10)

;//select_sort(arr,10);

//quick_sort(arr,10);

//heap_sort(arr,10);

printf

("----------------------\n");

show_arr

(arr,10)

;merge_sort

(arr,10)

;show_arr

(arr,10)

;//show_arr(arr,10);

}

各種排序演算法和查詢演算法

自己實現了一遍氣泡排序 選擇排序 插入排序,留個念想 氣泡排序 簡單來說就是從陣列末端冒泡到陣列當前位置 void bubblesort unsigned char data,unsigned short length 選擇排序 當前位置之後的所有數跟當前位置的數比較,得到最小的數到當前位置 voi...

排序 各種排序演算法

每次將乙個待排序的記錄,按其關鍵字大小插入到前面已經排好序的子表中適當位置,直到全部記錄插入完成為止 待排序的記錄放在陣列r 0,n 1 中 排序過程中將r分成兩個子區間,有序區r 0,i 1 無序區r i,n 1 將當前無序區的第1個記錄,插入到有序區中適當的位置上 每次是有序區增加乙個記錄,知道...

各種排序演算法分析與比較

1.直接插入排序 每一趟將乙個待排序的元素作為關鍵字,按照其關鍵字的大小插入到已經排好的部分序列的適當位置上。平均時間複雜度為o n2 空間複雜度為o 1 void insertsort int r,int n r j 1 temp 2.氣泡排序 平均時間複雜度為o n2 空間複雜度為o 1 voi...