排序演算法是《資料結構與演算法》中最基本的演算法之一
排序演算法可以分為內部排序和外部排序,內部排序是資料記錄在記憶體中進行排序,而外部排序是因排序的資料很大,一次不能容納全部的排序記錄,在排序過程中需要訪問外存。常見的內部排序演算法有:插入排序、希爾排序、選擇排序、氣泡排序、歸併排序、快速排序、堆排序、基數排序等。用一張圖概括:
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 原理 用乙個索引位置上的元素,...