C語言 氣泡排序,選擇排序,插入排序,堆排序

2021-08-20 07:45:59 字數 1380 閱讀 6185

氣泡排序【穩定排序】

///冒泡

void bubblesort(int arr, int len)

int bound = 0;

for (; bound < len; bound++)

} }}

選擇排序

「打擂台」

///選擇排序//

void selectsort(int arr, int len)

int bound = 0;

for (; bound < len; bound++)

} }}

插入排序【穩定排序】

步驟:定義好邊界。

儲存bound指向的元素

從後往前的去找乙個合適的防治bound_value的位置,一邊找一邊搬運。

特點:

插入排序///

void insersort(int arr, int len)

int bound = 1;

for (; bound < len; bound++)

else

}arr[cur] = bound_value;

}}

堆排序

堆的性質:完全二叉樹

如果是小隊,父節點的值小於子節點,如果是大堆,反之。

堆排序步驟:

基於數組建堆

迴圈刪除堆頂元素,將所有的元素都刪除,排序完成

int cmp(int a, int b)

void adjustdown(int arr, int len, int index)

else

child = parent;

parent = (child - 1) / 2;

} }swap(&arr[0], &arr[len - 1]);

adjustdown(arr, len-1, 0);

}void heapcreate(int arr, int len)

int i =len-1;

for (; i > 0; --i)

adjustup(arr, len, 0);

}void heapsort(int arr, int len)

int left = 0;

int right = len - 1;

}

希爾排序【穩定排序】------分組式的插入排序

gap:步長,指同組元素之間的下表間隔

gap取值:n/2,n/4,n/8......1;

void shellsort(int arr, int len)

else

}} }

}

C語言 氣泡排序,選擇排序,插入排序

利用順序表進行三種排序 1,氣泡排序 void bubblessort seqlist seq 氣泡排序 2,選擇排序 void selectsort seqlist seq 選擇排序 swap seq array begin seq array min index if begin max ind...

氣泡排序,選擇排序,插入排序

氣泡排序,選擇排序,插入排序 小規模的檔案以及基本有序的檔案,插入排序的效能比快速排序的效能更為有效一些,實際上,插入排序通常也做快速排序實現的一部分。1 氣泡排序 packagedatastrut public classbubblesort public voidinsert longvalue...

選擇排序 , 插入排序 , 氣泡排序

編寫 include void println int array,int len 列印給定長度的陣列 printf n void swap int array,int i,int j 交換陣列中兩個位置的元素 void selectionsort int array,int len o n n 對...