一 冒泡排序 大数沉沦
1.n个数 n 趟
2.相邻数对比,大的交换
//冒泡排序 相邻的对比然后交换顺序
public static void order1(int[] a) {
//最外层排序 是趟数 n个数n趟
for(int i=0;i<a.length-1;i++) {
//相邻数比较 后面的排了就减掉
for(int j=0;j<a.length-1-i;j++) {
if(a[j]>a[j+1]) {
int t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
}
}
二 选择排序
1.在没有排序的里面找到一个一个最小的(最大的)放在起始位置。n个数需要排n-1轮,选择排序是不稳定排序法
步骤:
1.每一轮排序都假设第一个索引元素都是最小的,然后(a[i]开始对比)和后面的元素(a[j]也就是相当于(a[i+i),所以j=i+1)对比,如果小就交换位置,直到最后一轮为止
//选择排序 少量元素
//在没有排序的数组中选择一个最小的(最大的)放在第一个,然后在未排序的接着选择
// n个数 需要n-1轮的排序 因为最后一轮不需要排序 假设第一个啊a[0]是最小的 然后 a[j]就是a[i+1]对比,大就交换位置,其余的位置不变
public static void order2(int[] a) {
for(int i=0;i<=a.length-2;i++) {
int min=i;//假设固定最小索引元素对比
for(int j=i+1;j<a.length;j++) {
if(a[min]>a[j]) {
int t=a[min];
a[min]=a[j];
a[j]=t;
}
}
}
}
三、插入排序
1.将元素分为两组,已排序和未排序,未排序的第一个索引元素和已排序的作比较,然后插入。n个元素进行n-1比较
步骤:第一轮的时候将第一个元素作为已排序然后对比。
//插入排序 n个元素 n-1轮
//将数组分为两组 一组为排序好的,一组为待排序 未排序的第一个元素向排序中的元素插入
//默认第一个索引元素排序好了
public static void order3(int[] a) {
for(int i=1;i<a.length;i++) {
for(int j=i;j>0;j--) {
if(a[j-1]>a[j]) {
int t=a[j-1];
a[j-1]=a[j];
a[j]=t;
}
}
}
}