hello各位小伙伴们,我依旧是你们熟悉的那个集美貌 智慧 优雅与一体的槿凉!最近呢也是学完了java基础部分,掌握的感觉还可以,然后把基本知识点又过了一遍,感觉自己马上就快成为编程大佬了哈哈哈。开个玩笑啦,那么javase学完,紧接着数据结构和算法不能落下了,那么今天呢就简单的来分享三个简单的排序算法,希望这些知识点对大家有点帮助,喜欢的小伙伴来个一键三连呐!
一:冒泡排序
基本思想:即现在有个数组arr,数组中有一些元素,现在我们要对这个数组里面的元素进行一个从小到大的排序,冒泡排序采用的思想就是比较相邻的元素值,如果满足条件就交换值,类似于水中的气泡小的往上冒,大的往下沉。
算法实现:
首先我们创建一个乱序数组:
int[] array= { 63, 4, 24, 1, 3, 15 };
接下来我们实现冒泡排序算法
publicvoidsort(int[] array) { for (inti=1; i<array.length; i++) { // 比较相邻两个元素,较大的数往后冒泡for (intj=0; j<array.length-i; j++) { if (array[j] >array[j+1]) { inttemp=array[j]; // 把第一个元素值保存到临时变量中array[j] =array[j+1]; // 把第二个元素值保存到第一个元素单元中array[j+1] =temp; // 把临时变量(也就是第一个元素原值)保存到第二个元素中 } } }
最后我们遍历输出排序后的数组:
*/publicvoidshowArray(int[] array) { for (inti : array) { // 遍历数组System.out.print(" >"+i); // 输出每个数组元素值 } System.out.println(); }
这个算法非常的简单昂,大家看看代码基本就能看懂了,如果有不懂的地方可以私信问我哈!这里给出完整代码实现:
publicclassBubbleSort { publicstaticvoidmain(String[] args) { // 创建一个数组,这个数组元素是乱序的int[] array= { 63, 4, 24, 1, 3, 15 }; // 创建冒泡排序类的对象BubbleSortsorter=newBubbleSort(); // 调用排序方法将数组排序sorter.sort(array); } /*** 冒泡排序* * @param array 要排序的数组*/publicvoidsort(int[] array) { for (inti=1; i<array.length; i++) { // 比较相邻两个元素,较大的数往后冒泡for (intj=0; j<array.length-i; j++) { if (array[j] >array[j+1]) { inttemp=array[j]; // 把第一个元素值保存到临时变量中array[j] =array[j+1]; // 把第二个元素值保存到第一个元素单元中array[j+1] =temp; // 把临时变量(也就是第一个元素原值)保存到第二个元素中 } } } showArray(array); // 输出冒泡排序后的数组元素 } /*** 显示数组中的所有元素* * @param array 要显示的数组*/publicvoidshowArray(int[] array) { for (inti : array) { // 遍历数组System.out.print(" >"+i); // 输出每个数组元素值 } System.out.println(); } }
二:直接选择排序
基本思想:在数组中确定一个元素,与其他的元素相比较,比这个元素大的往后走,比这个元素小的往前走,而不是交换相邻元素,直接选择排序的交换次数很少,速度比冒泡排序要快。
算法示例:(这里我拼了个图大家直接看第……趟排序的结果即可)
代码实现:
老规矩我们先定义一个乱序的数组:
int[] array= { 63, 4, 24, 1, 3, 15 };
接下来我们实现选择排序算法:
publicvoidsort(int[] array) { intindex; for (inti=1; i<array.length; i++) { index=0; for (intj=1; j<=array.length-i; j++) { if (array[j] >array[index]) { index=j; } } // 交换在位置array.length-i和index(最大值)上的两个数inttemp=array[array.length-i]; // 把第一个元素值保存到临时变量中array[array.length-i] =array[index]; // 把第二个元素值保存到第一个元素单元中array[index] =temp; // 把临时变量也就是第一个元素原值保存到第二个元素中 }
接着我们遍历输出排序后的数组:
publicvoidshowArray(int[] array) { for (inti : array) { // 遍历数组System.out.print(" >"+i); // 输出每个数组元素值 } System.out.println(); }