經典排序演算法

2021-09-24 11:23:55 字數 2676 閱讀 5636

排序演算法是《資料結構與演算法》中最基本的演算法之一

排序演算法可以分為內部排序和外部排序,內部排序是資料記錄在記憶體中進行排序,而外部排序是因排序的資料很大,一次不能容納全部的排序記錄,在排序過程中需要訪問外存。常見的內部排序演算法有:插入排序、希爾排序、選擇排序、氣泡排序、歸併排序、快速排序、堆排序、基數排序等。用一張圖概括:

1、比較相鄰的元素。如果前乙個比後乙個大,就進行交換;

2、從前到後依次進行比較操作,一次操作完成以後最後的元素就是最大的數;

3、針對所有的元素重複以上的步驟,除了最後乙個;

4、重複步驟1~3,直到排序完成。

/**

* 氣泡排序

* @param array

* @return

*/public static int bubblesort(int array)

for (int i = 0; i < array.length; i++)

} }return array;

}

1、取陣列中最大的數放到乙個位置

2、第二次從第二個位置開始到最後取最大的放到第二位

3、第三次從第三個位置開始到最後取最大的放到第三位

4、依次類推

/**

* 選擇排序

* @param array

* @return

*/public static int selectionsort(int array)

} if (index == i)

continue;

else

} return array;

}

1、從第二個元素開始從後向前掃瞄;

2、如果該元素找到比它小的元素就插在它的後面;

3、重複以上步驟

/**

* 插入排序

* @param arr

* @param length

*/public static int insertsort(int sourcearray)

// 存在比其小的數,插入

if (j != i)

} return arr;

}

1、我們可以通過選擇增量將陣列進行分組插入排序

2、依次增加減少增量進行分組插入排序操作

3、直到對陣列所有資料進行插入排序(此時整個序列基本有序)

/**

* 希爾排序

* @param array

* @return

*/public static int shellsort(int array)

array[k + increasement] = temp;}}

} }return array;

}

1、採用分治法把長度為n的輸入序列分成兩個長度為n/2的子串行;

2、對這兩個子串行分別採用歸併排序;

3、將兩個排序好的子串行合併成乙個最終的排序序列。

/**

* 歸併排序

* @param array

* @return

*/public static int mergesort(int array)

int mid = length / 2;

int left = arrays.copyofrange(array, 0, mid);

int right = arrays.copyofrange(array, mid, length);

return merge(mergesort(left), mergesort(right));

}public static int merge(int left, int right) else if (j >= right.length) else if (left[i] > right[j]) else

} return result;

}

1、從數列中挑出乙個元素,稱為 「基準」(pivot);

2、所有元素比基準值小的擺放在基準前面,所有元素比基準值大的擺在基準的後面(相同的數可以到任一邊)。在這個分割槽退出之後,該基準就處於數列的中間位置。這個稱為分割槽(partition)操作;

3、遞迴地(recursive)把小於基準值元素的子數列和大於基準值元素的子數列排序。

/**

* 快速排序

* @param arr

* @param start

* @param end

*/public static void quicksort(int array)

public static void sort(int array, int start, int end)

if (i < j)

// 從左向右找比基準數大的數

while (i < j && array[i] < baseval)

if (i < j)

} // 把基準數放到i的位置

array[i] = baseval;

// 遞迴

sort(array, start, i - 1);

sort(array, i + 1, end);

}

經典排序演算法

排序分為內部排序和外部排序,內部排序是指待排序的資料都是在記憶體中的,例如陣列 外部排序指待排序資源在記憶體外,例如對檔案的排序。此篇說的是內部排序。通俗地來說,內部排序就是將一堆資料按一定規則對它進行排序。排序又分為穩定排序和不穩定的排序,如果初始序列ai,ak有序 ai ak 排序後變成了ak,...

經典排序演算法

1 氣泡排序 bubble sort 最簡單的排序方法是氣泡排序方法。這種方法的基本思想是,將待排序的元素看作是豎著排列的 氣泡 較小的元素比較輕,從而要往上浮。在氣泡排序演算法中我們要對這個 氣泡 序列處理若干遍。所謂一遍處理,就是自底向上檢查一遍這個序列,並時刻注意兩個相鄰的元素的順序是否正確。...

經典排序演算法

思想 相鄰元素兩兩比較大的往下沉,小的往上浮.具體點說就是兩相鄰元素相互比較,如果前面的元素比後面的大就換位置,否則繼續比較.舉個例子吧 將陣列arr 排序 廢話了那麼多,接下來是應該有 的對吧public static void bulletsort int arr 原理 用乙個索引位置上的元素,...