上一次写的排序是在网上看视频教程的时候写下的,这一周学习到排序,发现老师讲的和视频看到的有一定的出入,上一周写的排序方法不是很正宗,现在重新按照新学习的方法写一次。
感觉最简单的冒泡排序,这个和视频看到的没什么出入。
public class maopao { public static void main(String[] args) { int[] a={1,2,10,28,33,19,15,5,2}; maopp(a); for(int x:a) System.out.print(x+" "); } static void maopp(int[] a) { for(int i=0;i<a.length-1;i++) { for(int x=0;x<a.length-1-i;x++) { if(a[x]>a[x+1]) { int tem=a[x]; a[x]=a[x+1]; a[x+1]=tem; } } } } }
然后是选择排序,上周写的选择排序每次比较都要把元素交换位置,而现在学到的只需要在外循环完成一次才交换一次位置。
public class Xuanze { public static void main(String[] args) { int[] a={10,22,33,9,17,16,22,19}; xuanz(a); for(int x:a) System.out.print(x+" "); } static void xuanz(int[] a) { for(int x=0;x<a.length-1;x++) { int min=x;//初始化min为当前角标; for(int i=x+1;i<a.length;i++) { if(a[min]>a[i]) min=i;//将最小值的角标赋值给min; } int tem=a[min];//将最小值赋给tem a[min]=a[x];//将当前角标对应元素赋给min对应的元素。 a[x]=tem;//将最小值赋给当前角标对应的元素 } } }
接下来是插入排序,个人感觉比较麻烦一点,初学
public class Cha { public static void main(String[] args) { int[] a={10,28,18,17,13,9,14,2,5}; charu(a); for(int x:a) System.out.print(x+" "); } static void charu(int[] a) { for(int i=1;i<a.length;i++) { int tem=a[i];//把a[i]定义为需要插入的数, int p=i;//定义一个指针记录tem比较了几次,每比较一次自减1 for(int x=i-1;x>=0;x--) { if(tem<a[x]) { a[x+1]=a[x];//如果需要插入的数比前面的数小,就把前面的数赋值给相邻的后面的角标元素。 p-=1; } } a[p]=tem;//每比较一次a[i]的值就会向左边移动一个角标。 } } }