基本思想從輸入序列的第乙個元素到最後乙個元素進行兩兩比較。以最小序列為例,最小元素會如同氣泡一樣漂浮到序列頂端。
//o(n^2)
void bubblesort(int a)}}
}//o(n^2)
void bubblesortedimproved(int a)
}}
尋找最小值,用當前位置和最小值交換。直到序列排好序
//o(n^2)
void selectsort(int a)
}//swap
temp = a[min];
a[min] = a[i];
a[i] = temp;
} }
從輸入序列中移除乙個元素到待插入序列的正確位置,直到每個元素都被選擇一次
//o(n^2)
void intsertsort(int a)
a[j] = temp;
}
n間距的插入排序,使用不同的間距比較元素,通過逐漸減少間距最終完成一次常規插入排序
//時間複雜度取決於間距
void shellsort(int a)
a[k] = temp}}
if(gap == 1)
}}
分治和歸併的思想進行的排序,小檔案開始大檔案結束
//o(nlogn)
void mergesort(int a,int left,int right)
}void merge(int a,int left,int mid,int right)
while(l <= mid)
while(m <= right)
for(int i = left;i <= right;i++)
}
大檔案開始小檔案結束
//o(nlogn)
quicksort(int a,int low,int high)
}int partition(int a,int low,int high)
while(a[rihjt] > pivot)
if(left < right)
}a[low] = a[right];
a[right] = pivot;
return right;
}void swap(int a,int left,int right)
基本排序演算法總結
1.插入排序 insertion sort o n2 對少量資料排序很有效,不需要額外的儲存空間。待排序列已經是從小到大,最壞就是逆序的時候了。且是穩定的。include include int exchange int a,int i,int j int insert int a,int s,in...
基本排序演算法總結
排序演算法很多,這裡做個總結,最重要的是記住演算法思想,而不是記住程式怎麼寫。程式過一段時間就會忘了,演算法原理熟悉了現場寫出來應該是很容易的。時間複雜度為o n 2 的三種排序演算法 插入排序 選擇排序 氣泡排序。插入排序 插入排序是選定元素找位置。對於位置為p上的元素,假定0 p 1的元素已經排...
基本排序演算法總結
排序演算法的評價 評價排序演算法的一般準則是 平均情況下的排序速度 最優最劣情況下的速度 行為是否自然 是否以相等的關鍵字重排元素 陣列的排序速度直接與比較 comparison 次數和交換 exchange 次數相關,其中交換的作用更大,因為占用的時間多。如果頻繁遭遇到最優最劣情況,則最優和最劣情...