(一)快速排序
思想:用樞紐元素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.建堆操作 乙個陣列作為輸入,先構建乙個完全二叉樹。這棵樹一般不會滿足最大...