冒泡,选择,插入,这三个排序应该是所有编程语言初学者所遇到过的,可能在实际的编程应用中不会遇到,但对于初学者而言能起到锻炼编程思维的作用。废话不多说,下面进入正题。
冒泡排序
冒泡排序的就是让大的数向后冒,让小的数向前冒。通过前后两个数据比较,不断将大的元素移动到尾部。
public static void main(String[] args) {
// TODO Auto-generated method stub
int []arr= {-10, 2, 3, 246, -100, 0, 5};
for(int i=0;i<arr.length-1;i++) {
for(int j=0;j<arr.length-i-1;j++) {
if(arr[j]>arr[j+1]) {
int temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
for(int a:arr) {
System.out.print(a+" ");
}
}
选择排序
选择排序就是把无序区的最小元素与首元素互换位置,然后将有序区的区间扩大一位,直到所有无序区都变成有序区。
public static void main(String[] args) {
// TODO Auto-generated method stub
int []arr= {-10, 2, 3, 246, -100, 0, 5};
for(int i=0;i<arr.length-1;i++) {
int k=i;
//位置还不确定的数据
for(int j=i+1;j<arr.length;j++) {
if(arr[j]<arr[k]) {
k=j;
//遍历找到比k小的索引,然后把j赋给k;
}
}
if(i!=k) {
int temp=arr[i];
arr[i]=arr[k];
arr[k]=temp;
}
}
for(int a:arr) {
System.out.print(a+" ");
}
}
插入排序
插入排序是把数组分为有序区和无序区两块,然后将无序区的指定索引的数插入到有序区的指定位置,假设第0个元素是已经排序好的,无序区第一次循环从1开始遍历,设置一个temp,找到要插入的位置,把temp插入到有序区指定位置。
public static void main(String[] args) {
// TODO Auto-generated method stub
int []arr= {-10, 2, 3, 246, -100, 0, 5};
int j=0;
for(int i=1;i<arr.length;i++) {
int temp=arr[i];
//temp存放将要插入的数据
if(arr[i]<arr[i-1]) {
for( j=i-1;j>=0&&arr[j]>temp;j--) {
arr[j+1]=arr[j];
//temp的位置空出来,把第j个的值赋给第j+1个;
}
arr[j+1]=temp;
}
}
for(int a:arr) {
System.out.print(a+" ");
}
}