冒泡排序(重要):
重复的走访要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来,走访数列的的工作是重复的进行直到没有在需要交换的元素,此时数列排序完成
冒泡排序算法的运作:
1.比较相邻的元素.如果第一个比第二个大,就交换他们两个
2.对每一对相邻元素做同样的工作,从开始第一对到结尾最后一对(最后的元素应该是最大的数)
3.针对所有元素重复以上的步骤,除了最后一个
4.持续每次对越来越少的元素重复以上的步骤,直到没有任何一对需要比较
Java代码示例:
public class Ex2 {
public static void main(String[] args) {
int[] a=new int[]{36,25,95,14,56};//创建数组
System.out.println("排序前数组:");
//增强for循环遍历数组
for(int a1:a){
System.out.print(a1+" ");
}
int x=0;
int length=a.length;//求数组长度
for(int i=1;i<length;i++){//通过变量i来控制数组剩几个元素需要比较
for(int j=0;j<length-i;j++){//控制元素的比较
if(a[j]>a[j+1]){//比较的后一个元素小于前一个元素
//交换元素
x=a[j];
a[j]=a[j+1];
a[j+1]=x;
}
}
}
System.out.println();
System.out.println("冒泡排序后数组:");
//增强for循环遍历数组
for(int a1:a){
System.out.print(a1+" ");
}
}
}
运行结果:
选择排序:
工作原理:
每次从待排序的数组中选出最小(或者最大)的元素,存放在起始位置,直到全部待排序的[]数据排完
Java代码示例:
public class Ex3 {
/**
* 选择排序
*/
public static void main(String[] args) {
int[] a=new int[]{65,15,69,75,24};
int length=a.length;
System.out.println("排序前数组:");
//增强for循环遍历数组
for(int a1:a){
System.out.print(a1+" ");
}
int x=0;
for(int i=0;i<length;i++){
for(int j=i+1;j<length;j++){
if(a[i]>a[j]){
x=a[j];
a[j]=a[i];
a[i]=x;
}
}
}
System.out.println();
System.out.println("选择排序后数组:");
//增强for循环遍历数组
for(int a1:a){
System.out.print(a1+" ");
}
}
}
结果如图:
快速排序:
Java代码示例
public class Ex4 {
/**
* 快速排序
*/
public static void main(String[] args) {
int[] a=new int[]{48,58,102,65,84};
System.out.println("排序前数组:");
//增强for循环遍历数组
for(int a1:a){
System.out.print(a1+" ");
}
int length=a.length;
int key=a[0];
int x=0;
for(int i=0;i<length;i++){
for(int j=i+1;j<length;j++){
if(a[i]<a[j]){
x=a[j];
a[j]=a[i];
a[i]=x;
}
}
}
System.out.println();
System.out.println("选择排序后数组:");
//增强for循环遍历数组
for(int a1:a){
System.out.print(a1+" ");
}
}
}
结果: