經典排序 快速排序 合併排序 堆排序

2022-07-16 02:42:15 字數 501 閱讀 5298

(一)快速排序

思想:用樞紐元素pivot將待排陣列分成兩個子表,左表中元素全都小於右表元素,,遞迴執行

int partition(int a,int low,int high)

for(int i=low,j=mid+1,k=i;i<=mid&&j<=high;k++)

else

} while(j<=high) a[k++]=b[j++];

} void mergesort(int a,int low,int high)

(三)堆排序

思想:初始建立乙個大根堆,後輸出最大值後不斷調整成堆的過程,三個函式實現

void adjustdown(int a,int k,int len) 

a[k]=temp;

} void buildmaxheap(int a,int len)

}void heapsort(int a,int len)

}

插入排序 合併排序 堆排序和快速排序

插入排序 時間複雜度o n2 param array原地排序演算法 public void insertsort int array array position present 合併排序 o nlogn param array param left 第乙個索引 param right 最後乙個索引...

插入排序 合併排序 堆排序和快速排序

1 插入排序 2 時間複雜度o n2 3 param array原地排序演算法 4 5public void insertsort int array 13 array position present 14 15 1617 1819 20 21 合併排序 22 o nlogn 23 param a...

堆排序 合併排序 快速排序 簡單比較

堆排序 1.堆排序是構造一顆完全二叉樹 2.堆有最大堆與最小堆兩種 3.保持堆性質操作 當i的left i 和right i 都是最大堆,這時i可能小於其子女,呼叫保持堆性質操作,讓a i 下降使得以i為根的子樹保持最大堆 4.建堆操作 乙個陣列作為輸入,先構建乙個完全二叉樹。這棵樹一般不會滿足最大...