您的位置:首页 > 其它

冒泡排序、选择排序的区别

2015-12-18 12:37 246 查看
冒泡排序:
/**
* @Title: 冒泡排序
* @Description: 在N个数的无序队列里将相邻两个数依次进行比较,将小数调换到前面, 逐次比较,直至将最大的数移到最后;
* 				  下一次将前面剩下的N-1个数继续比较最大,并将这段中最大数放到N-1这段数组的最后,即完成将第二大的数移至倒数第二位;
* 				 ...(依此类推)
* @param arr
* @return int[]
*/
public int[] bubbleSort(int[] arr){
for(int i = 0; i < arr.length - 1; i++){
//每次比较相邻两个数,将较大的放到后面;循环终止时即完成将arr[0]到arr[arr.length - i - 1]中最大的数放到最后
for(int j = 0; j < arr.length - i - 1; j++){
if(arr[j] > arr[j+1]){
int temp = arr[j+1];
arr[j+1] = arr[j];
arr[j] = temp;
}
}
}
return arr;
}

选择排序:
/**
* @Title:选择排序
* @Description: 用一个变量记录最小值下标,第一次在N个数的无序队列里将记录变量与遍历数依次进行比较,若遍历值小于记录变量对应值,则用记录变
* 					量记录其下标,当遍历完成后,记录变量中保存下标即为这段数组中最小值下标,然后用记录的下标元素和第一个元素对调;
* 				下一次遍历从二个开始对比查找最小值下标,遍历完成后即得下标为2到N的值中最小的值下标,然后将记录变量记录的下标与第二个元素对调,
* 				再下一次从第三个元素开始对比查找最小值下标,依此类推。
* @param arr
* @return int[]
*/
public int[] selectSort(int[] arr){
for(int i = 0; i < arr.length - 1; i++){
int min = i; //数组下标
//用min记录最小值下标,默认为i,依次与后面的数比较大小,若其数值小于arr[min],则用min记录这个值下标
for(int j = i + 1; j < arr.length; j++){
if(arr[j] < arr[min])
min = j;
}
//若最小值下标不是默认的i,则交换两者位置
if(min != i){
int temp = arr[i];
arr[i] = arr[min];
arr[min] = temp;
}
}
return arr;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息