一、簡單排序
1.氣泡排序o(n^2)
兩兩比較,反序交換
public static int bubblesort(int arr)
} }return arr;
}
2.選擇排序o(n^2)
public static int selectsort(int arr)
}if(i != minindex)
} return arr;
}
3.插入排序
將乙個記錄插入到已經排好序的有序表中得到乙個新的、記錄增1的有序表
public static int insertsort(int arr)
}// move
for (int k = i; k > index; k--)
arr[index] = sentinel;
}} return arr;
}
二、複雜排序
1.希爾排序o(n^(3/2))
增量序列最後乙個增量值必須等於1,初次取序列的一半為增量,以後每次減半,使序列基本有序,直到增量為1。
不實現了,在直接排序的基礎上增加了乙個增量,序列的增量比較。
2.堆排序o(nlogn)
是在選擇排序基礎上的改進,將序列構建成乙個大頂堆,將堆頂元素移走,再將剩下的元素重新構建乙個堆
堆:完全二叉樹,節點大於或等於其左右節點的值稱為大頂堆,小於或等於稱為小頂堆
public static int heapsort(int arr)
for (int i = len - 1; i > 0; i--)
return arr; }
// 調整堆結構
public static int adjustheap(int arr, int curind, int len)
// 父節點與較大子節點比較
if (arr[curind] > arr[i-1])
arr[curind] = arr[curind] ^ arr[i-1];
arr[i - 1] = arr[curind] ^ arr[i-1];
arr[curind] = arr[curind] ^ arr[i-1];
curind = i - 1;
} arr[curind] = tmp;
return arr;
}
3.歸併排序
用遞迴和分而治之的技術將資料序列劃分成為越來越小的半子表,再對半子表排序,最後再用遞迴步驟將排好序的半子表合併成為越來越大的有序序列
public static int mergesort(int arr, int first, int last)
return arr; }
public static void merge(int arr, int first, int mid, int last) else
index ++;
} while (indexl < mid)
while (indexr < last)
index = 0;
for (int i = first; i < last; i++)
}
4.快速排序o(nlogn)
經過一次排序分割成2部分,一部分大於另一部分
public static int quicksort(int arr, int low, int high)
return arr;
} public static int partition(int arr, int low, int high)
swap(arr, low, high);
while (low < high && privotkey >= arr[low])
swap(arr, low, high);
} return low;
} public static void swap(int arr, int i1, int i2)
}
優化:隨機選取、三數取中 資料結構和演算法(排序)
排序 使乙個無序序列轉變為有序序列的過程 排序的穩定性 假設ki kj,1 i n,1 j n,i j 且在排序前的序列中ri領先於rj 即i如果排序後ri仍領先於rj,則稱所用的排序方法是穩定的,否則是不穩定的 影響排序演算法效能的幾個要素 時間效能,輔助空間 演算法的複雜性 氣泡排序 每次取相鄰...
資料結構和演算法 排序演算法 希爾排序
希爾排序 希爾排序 希爾排序就是插入排序的一種改進版本,演算法的步驟 把乙個序列不視為乙個整體,而是視為多個子串行,假設間隔是gap 4 alist 54,26,93,17,77,31,44,55,20 54,26,93,17,77,31,44,55,20 54 77 20 這是1 組,間隔是4,2...
資料結構和演算法 排序演算法 氣泡排序
排序演算法 排序演算法,我們想要把線性表中的無序序列,排成有序序列,的演算法,就是排序演算法,排序演算法的穩定性 舉例 假設對下面的元組要以他們的第乙個數字來排序。4,1 3,1 3,7 5,6 如果你排序之後,3,1 3,7 和原來的順序一樣,就是穩定的,否則就是不穩定的,3,1 3,7 4,1 ...