一、交換排序
基本思想:所謂交換,就是根據序列中兩個記錄鍵值的比較結果來對換這兩個記錄在序列中的位置,交換排序的特點是:將鍵值較大的記錄向序列的尾部移動,鍵值較小的記錄向序列的前部移動
氣泡排序
void bubblesort(int a,int len)}}
}
特性:
時間複雜度:o(n^2)
空間複雜度:o(1)
穩定性:穩定
快速排序
基本思想:任取待排序元素序列中的某元素作為基準值,按照該排序碼將待排序集合分割成兩個子串行,左子串行中所有元素均小於基準值,右子串行中所有元素均大於基準值,然後最左右子串行重複該過程,知道所有元素都排列在相應位置上為止
將區間按照基準值劃分為左右兩半部分的常見方式有:
void quicksort(int a,int left,int right)
{ int i=left;
int j=right;
int base=a[left];
if(left>=right)
return ;
while(i!=j)
{while(i=base)
j--;
if(j>i)
a[i]=a[j];
while(i特性:
快速排序整體的綜合性能和使用場景比較好
時間複雜度:o(n*logn)
空間複雜度:o(logn)
穩定性:不穩定
二、歸併排序
基本思想:採用分治法,將已有序的子串行合併,得到完全有序的序列:即先使每個子串行有序,再使子串行段間有序。若將兩個有序表合併成乙個有序表,稱為二路歸併
特性:
歸併的缺點在於需要o(n)的空間複雜度
時間複雜度:o(n*logn)
空間複雜度:o (n)
穩定性:穩定
C 下幾種排序演算法
前言 下午開發乙個功能涉及到排序,這裡就列舉集中並作簡單效能對比。本文是作為記錄用的也就不多廢話了,直接上 public class sort private int getlist int num return array private void desplay int list 氣泡排序 su...
資料結構和演算法 排序演算法(下)
1 基數排序 又稱桶子排序,它是通過 鍵值的各個位的值,將要排序的元素fenp 至某些 桶 中 達到排序的作用。基數排序法是屬於穩定性的排 序,基數排序法 的是效率高的 穩定性排序法。基數排序是使用空間換時間的經典演算法。2 基排序基本思想 將所有待排序數補全成統一長度的數,數字短的前面用0補齊,然...
重溫一下各種排序演算法
最近打算用一些併發的模型研究一下排序演算法.所以,我首先回顧了一下各種排序演算法,並將它們用c語言實現了.氣泡排序 基本思想 先取第乙個元素,將它與後面n 1個元素比較,將n個元素中最小的移到首部.接著,忽略第乙個元素,取第二個元素,將它與後面的n 2個元素比較,將n 1個 元素中最小的移到位置2....