三个基础排序之 冒泡,选择,直接插入排序
怎样理解并且快速记忆?对于排序,理解并快速记忆的方法即是用生活实例形象化
1.对于冒泡和选择排序,两者很相似,简单理解为排队(从小到大),每次排一个最高的出来站到最后,只是冒泡是每次遇到比当前高的就换一下,选择排序是找到你应该的位置站好,都需要两重循环控制。
2.直接插入排序就相当于抓牌,从第一张抓,每抓一张都排好,最后自然是排好顺序的。
(Java实现代码如下)
/**
* 冒泡排序(从小到大)
* @param int[] arr
*
*/
public void bubbleSort(int[] arr) {
for(int ding = arr.length - 1; ding >=0; ding--) {
for(int i = 0; i < ding; i++) {
if(arr[i] > arr[i+1]) {
int temp = arr[i];
arr[i] = arr[i+1];
arr[i+1] = temp;
}
}
}
}
/**
* 选择排序(从小到大)
* @param int[] arr
*
*/
public void selectSort(int[] arr) {
for(int ding = arr.length-1; ding >= 0; ding--) {
int maxIndex = 0;
int maxValue = arr[0];
for(int i = 0; i <= ding; i++) {
if(arr[i] > maxValue) {
maxIndex = i;
maxValue = arr[i];
}
}
new SearchSortDemo().swap(arr, maxIndex, ding);
}
}
/**
* 直接插入排序(从小到大)
* @param int[] arr
*
*/
public void insertSort(int[] arr) {
for(int i = 0; i < arr.length ; i++) {
int lastIndex = i-1;
int newValue = arr[i];
while(lastIndex >= 0&&newValue < arr[lastIndex]) {
arr[lastIndex+1] = arr[lastIndex];
lastIndex--;
}
arr[lastIndex + 1] = newValue;
}
}
网友评论