1.冒泡排序算法:
<span style="font-size:14px;">从小到大排:
public static void main(String[] args) {
int [] x={23,54,12,22,7,0,99,34,101};
</span><pre class="brush:java;"> // 1.把第1个数拿出来,和后面的所有数比较,比后面的大就交换位置
// 2.把第2个数拿出来,和后面的所有数比较,比后面的大就交换位置
// 3.把第n-1个数拿出来,和后面的所有数比较,比后面的大就交换位置
for (int i = 0; i < x.length; i++) { for (int j = i+1; j < x.length; j++) { if (x[j]<x[i]) { //定义一个变量,把数组i位置的值赋给它 int temp=x[i]; //把数组j位置的值赋到数组i位置上 x[i]=x[j];//把原来数组i位置的值赋到数组j位置上 x[j]=temp;}}}//打印结果for (int i : x) {System.out.print("--"+i);}}
输出结果为:--0--7--12--22--23--34--54--99--101
<span style="font-size:14px;">从大到小排:
public static void main(String[] args) {
int [] x={23,54,12,22,7,0,99,34,101};
for (int i = 0; i < x.length; i++) {
for (int j = i+1; j < x.length; j++) {
if (x[j]>x[i]) {
//定义一个变量,把数组i位置的值赋给它
int temp=x[j];
//把数组j位置的值赋到数组i位置上
x[j]=x[i];
//把原来数组i位置的值赋到数组j位置上
x[i]=temp;
}
}
}
//循环打印从大到小
for (int i : x) {
System.out.print("--"+i);
}
}</span>
输出结果为:--101--99--54--34--23--22--12--7--0
2.选择排序算法:
public static void main(String[] args) {
int [] x={23,54,12,22,7,0,99,34,101};
for (int i = 0; i < x.length; i++) {
int lowerIndex = i;
// 找出最小的一个索引
for (int j = i + 1; j < x.length; j++) {
if (x[j] < x[lowerIndex]) {
lowerIndex = j;
}
}
// 交换
int temp = x[i];
x[i] = x[lowerIndex];
x[lowerIndex] = temp;
}
for (int i : x) {
System.out.print(i + " ");
}
}
结果为:0 7 12 22 23 34 54 99 101
冒泡排序和选择排序是排序算法中比较简单和容易实现的算法。冒泡排序的思想为:每一次排序过程,通过相邻元素的交换,将当前没有排好序中的最大(小)移到数组的最右(左)端。而选择排序的思想也很直观:每一次排序过程,我们获取当前没有排好序中的最大(小)的元素和数组最右(左)端的元素交换,循环这个过程即可实现对整个数组排序。
3.插入排序
有一个已经有序的数据序列,要求在这个已经排好的数据序列中插入一个数,但要求插入后此数据序列仍然有序,这个时候就要用到一种新的排序方法——插入排序法,插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据,算法适用于少量数据的排序。
public static void main(String[] args) {
int [] x={0,54,12,22,7,24,99,34,101};
//因为第一个数固定好了,所以从i=1开始
for (int i = 1; i < x.length; i++) {
for (int j = i; j > 0; j--) {
if (x[j] < x[j-1]) {
//交换位置
int temp=x[j];
x[j]=x[j-1];
x[j-1]=temp;
}
}
}
for (int i : x) {
System.out.print(i + " ");
}
}
输出结果为:0 7 12 22 24 34 54 99 101
4.水桶排序
<span style="font-size:14px;">public static void main(String[] args) {
// 水桶排序
// 假设所有的数字在[0-100)之间
int [] nums={23,54,12,22,7,0,99,34,98};;
// 建水桶
int[] bucket = new int[100];
for (int num : nums) {
bucket[num]++;
}
// 装回去
int index = 0;
for (int i = 0; i < bucket.length; i++) {
for (int j = 0; j < bucket[i]; j++) {
nums[index++] = i;
}
}
// 打印
System.out.println(Arrays.toString(nums));
}</span>
输出结果为:[0, 7, 12, 22, 23, 34, 54, 98, 99]