8種常見排序

2021-08-15 03:26:13 字數 1604 閱讀 4987

堆排序(二叉樹模型)

#include // 交換函式

void swap (int a, int i, int j)

// 列印陣列

void printa (int *a, int

len)

printf ("\n");

}void heapify(int *a , int i, int

len)

}void heapsort(int *a, int

len)

//排序

for (i = len -1;i >=0; i--)

}int main()

; int

len = sizeof(a) / sizeof(a[0]);

heapsort (a, len);

printa (a, len);

return

0;}

歸併排序

#include 

// 列印陣列

void printa (int *a, int len)

printf ("\n");

}//歸併

void merge(int *a, int left, int mid, int right, int *tmp)

else

}while(i <= mid)

while(j <= right)

k = 0;

for(i = left; i <= right; i++)

}void mergesort(int *a, int left, int right, int *tmp)

int main()

; int len = sizeof(a) / sizeof(a[0]);

int tmp[10];

mergesort (a, 0, len-1, tmp);

printa (a, len);

return

0;}

快速排序

#include 

// 交換函式

void swap (int a, int i, int j)

// 列印陣列

void printa (int *a, int len)

printf ("\n");

}int partition(int *a, int left, int right)

printa (a, 10);

}swap (a , index, right); //.

return

index; //基準值的下標 //基準值左邊的數比基準值小 右邊的數比基準值大

}//排序

void qsort (int *a, int left, int right)

}int main()

; int len = sizeof(a) / sizeof(a[0]);

qsort (a , 0 , len - 1);

printa (a, 10);

return

0;}

8種常見的經典排序

8種常見的經典排序 分類 1 插入排序 直接插入排序 希爾排序 2 交換排序 氣泡排序 快速排序 3 選擇排序 直接選擇排序 堆排序 4 歸併排序 5 分配排序 基數排序 特點 所需輔助空間最多 歸併排序 所需輔助空間最少 堆排序 平均速度最快 快速排序 不穩定 快速排序,希爾排序,堆排序 1.直接...

8種排序演算法

學習了這麼多的排序演算法,還沒有做個總結,呵呵 氣泡排序 氣泡排序是最慢的排序演算法。在實際運用中它是效率最低的演算法。它通過一趟又一趟地比較陣列中的每乙個元素,使較大的資料下沉,較小的資料上公升。它是o n 2 的演算法。快速排序 快速排序是乙個就地排序,分而治之,大規模遞迴的演算法。從本質上來說...

8種排序演算法

1.選擇排序 兩層迴圈巢狀,0到n 1選出最小的,與第0個交換,縮小集合為1到n 1,選出最小的,與第乙個交換 時間複雜度 o n2 空間複雜度 因為中間只增加了兩個新變數,儲存最小值和下標,所以空間複雜度為o 1 當陣列為已排序狀態時,仍需要n次比較,最好的情況仍需要o n2 public sta...