堆排序(二叉樹模型)
#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...