文章目录
前言
经过一段时间的java学习,我们逐渐掌握语法,那就让我们学一下基本的排序方法吧。谢谢大家的关注,大家的关注才是我持之以恒更新的动力。
基本方法总结:
冒泡排序法:冒泡排序就是比较相邻之间的两个变量,如果第一个比第二个大就交换这两个变量的值,然后所有的变量都这样比较,按照大小进行交换,从而排序完成!
插入排序法:将第一个数作为有序基础数,第二个数和后面的数多作未排序数,从后往前依次扫描,并且找到合适位置插入。
选择排序法:从所有数据中,选择出最小或者最大的数据,然后将这位数据放在首位,依次每次都找最大或者最小数据,再将数据放在排序好的数据后面。
冒泡排序法
冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。以升序为例。顺序轮序数组内元素。依次比较两个相邻的元素,如果顺序错误就交换位置。比较过程最大值就像泡泡一样从左往右慢慢浮到最右侧。每轮遍历后右侧元素为最大值。共进行n轮轮序,最终排序完成。
时间复杂度:O(n2)~O(n2)~O(n) 空间复杂度:O(1)
冒泡排序就是比较相邻之间的两个变量,如果第一个比第二个大就交换这两个变量的值,然后所有的变量都这样比较,按照大小进行交换,从而排序完成!
代码:
package com.my.javapackage; public class Main { public static void main(String[] args) { Bubble_sort(); } //冒泡排序法 //冒泡排序就是比较相邻之间的两个变量,如果第一个比第二个大就交换这两个变量的值, // 然后所有的变量都这样比较,按照大小进行交换,从而排序完成! public static void Bubble_sort(){ int[] Sort_1 = {4,1,8,2,6,7,3,5}; //创建排序前的数组 int i,j,k,flag; //for循环打印排序前的数组 System.out.println("进行冒泡排序前的数组值为"); for (k=0;k< Sort_1.length;k++){ System.out.print(Sort_1[k]); } System.out.println(" "); //换行,让交互界面对齐一致好看 //冒泡排序 for (i=0;i< Sort_1.length-1;i++){ for (j=0;j< Sort_1.length-i-1;j++){ if (Sort_1[j] > Sort_1[j+1]){ flag = Sort_1[j]; Sort_1[j] = Sort_1[j+1]; Sort_1[j+1] = flag; } } } //打印排序好的数组 System.out.println("进行冒泡排序后的数组值为"); for (k=0;k< Sort_1.length;k++){ System.out.print(Sort_1[k]); } } }
运行结果图:
插入排序法
插入排序,一般也被称为直接插入排序。对于少量元素的排序,它是一个有效的算法。插入排序是一种最简单的排序方法,它的基本思想是将一个记录插入到已经排好序的有序表中,从而一个新的、记录数增1的有序表。在其实现过程使用双层循环,外层循环对除了第一个元素之外的所有元素,内层循环对当前元素前面有序表进行待插入位置查找,并进行移动。直到所有元素遍历完毕,排序结束。
时间复杂度:O(n2)~O(n2)~O(n) 空间复杂度:O(1)
将第一个数作为有序基础数,第二个数和后面的数多作未排序数,从后往前依次扫描,并且找到合适位置插入
代码:
package com.my.javapackage; public class Main { public static void main(String[] args) { Insert_sort(); } //插入排序法 //将第一个数作为有序基础数,第二个数和后面的数当作未排序数,从后往前依次扫描,并且找到合适位置插入 public static void Insert_sort(){ int[] Sort_1 = {4,1,8,2,6,7,3,5}; //创建排序前的数组 int i,j,k,flag; //for循环打印排序前的数组 System.out.println("进行插入排序前的数组值为"); for (k=0;k< Sort_1.length;k++){ System.out.print(Sort_1[k]); } System.out.println(" "); //换行,让交互界面对齐一致好看 //插入排序 for (i=0;i<Sort_1.length;i++){ flag = Sort_1[i]; j = i; while (j > 0 && flag < Sort_1[j - 1]) { Sort_1[j] = Sort_1[j - 1]; j--; } // 存在比其小的数,插入 if (j != i) { Sort_1[j] = flag; } } //打印排序好的数组 System.out.println("进行插入排序后的数组值为"); for (k=0;k< Sort_1.length;k++){ System.out.print(Sort_1[k]); } } }
插入方法中还有一种折半插入方法,更加有意思,对半折,依次比较,大家可以学习了解一下。
运行结果图:
选择排序法
选择排序(Selection Sort),它的工作原理是:第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。
以此类推,直到全部待排序的数据元素的个数为零。选择排序是不稳定的排序方法。
时间复杂度:O(n2)~O(n2)~O(n) 空间复杂度:O(1)
从所有数据中,选择出最小或者最大的数据,然后将这位数据放在首位,依次每次都找最大或者最小数据,再将数据放在排序好的数据后面!
代码:
package com.my.javapackage;
public class Main {
public static void main(String[] args) {
Insert_sort();
}
//选择排序法
//从所有数据中,选择出最小或者最大的数据,然后将这位数据放在首位,依次每次都找最大或者最小数据,再将数据放在排序好的数据后面!
public static void Insert_sort() {
int[] Sort_1 = {4, 1, 8, 2, 6, 7, 3, 5}; //创建排序前的数组
int i, j, k, flag;
//for循环打印排序前的数组
System.out.println("进行冒泡排序前的数组值为");
for (k=0;k< Sort_1.length;k++){
System.out.print(Sort_1[k]);
}
System.out.println(" "); //换行,让交互界面对齐一致好看
for (i = 0; i < Sort_1.length - 1; i++) {
int max = i;
for (j = i + 1; j < Sort_1.length; j++) {
if (Sort_1[j] > Sort_1[max]) {
max = j;
}
}
if (i != max) {
int tmp = Sort_1[i];
Sort_1[i] = Sort_1[max];
Sort_1[max] = tmp;
}
}
//打印排序好的数组
System.out.println("进行插入排序后的数组值为");
for (k = 0; k < Sort_1.length; k++) {
System.out.print(Sort_1[k]);
}
}
}
运行结果图:
总结
三种排序方法是最常见的,希望大家自己动手写一写,实践是检验真理的唯一标准!!!除了以上的一些排序方法,还有很多排序方法,例如:希尔排序、快速排序、归并排序、计数排序、基数排序、桶排序、猴子排序(这个特别有意思)等等……
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/73662.html