在工作中,可能经常需要对某个数组进行排序,这个时候,就该展示排序算法了。常见的排序算法很多,像选择排序、冒泡排序、快速排序等等。今天,主要总结下冒泡排序,面试中,可能也会经常问到,笔试写冒泡排序等。
假如有一个数组:{23,2,15,68,99,17,36,75};
冒泡排序的思想:
第1次比较:将第一个数和第二个数进行比较,如果第一个数字大于第二个数字,则进行位置交换;
第2次比较:将第二个数和第三个数进行比较,如果第二个数字大于第三个数字,则进行位置交换;
第3次比较:将第三个数和第四个数进行比较,如果第三个数字大于第四个数字,则进行位置交换;
一直这样比较,直到第一次比较结束,这样比较完之后,当前数组中最大的数就排到最后一位了;
第一次整体比较详解过程如下:
原始数组:23 2 15 68 99 17 36 75
第一次小比较:23和2比较,23比2大,则交换;比较后:2 23 15 68 99 17 36 75 ;
第二次小比较:23和15比较,23比15大,则交换:比较后:2 15 23 68 99 17 36 75 ;
第三次小比较:23和68比较,23比68小,不交换:比较后:2 15 23 68 99 17 36 75 ;
第四次小比较:68和99比较,68比99小,不交换:比较后:2 15 23 68 99 17 36 75 ;
第五次小比较:99和17比较,99比17大,则交换:比较后:2 15 23 68 17 99 36 75 ;
第六次小比较:36和99比较,99比36大,则交换:比较后:2 15 23 68 17 36 99 75 ;
第七次小比较:99和75比较,99比75大,则交换:比较后:2 15 23 68 17 36 75 99 ;
第一次整体比较完之后,最大的数已经排在末尾,然后取第一个数字,再重复上面的步骤,依次进行比较,直到所有数字比较完成。
代码实现如下:
public static void main(String[] args) {
int[] numbers = {23,2,15,68,99,17,36,75};
for(int i=0;i<numbers.length;i++){
for(int j=0;j<numbers.length-i-1;j++) {
if(numbers[j]>numbers[j+1]) {
int temp = numbers[j];
numbers[j] = numbers[j+1];
numbers[j+1] = temp;
}
}
}
System.out.println(Arrays.toString(numbers));
}
程序运行结果图如下:
冒泡排序知识的总结完了,还有很多排序算法,以后的文章中再总结。感觉开发工作要学的知识挺多的,但是我们要分清楚主次。知识虽然枯燥,但是我们多看多写,就会记得更加的深刻。我们应该不断的奋斗,成就美好的人生。