上一次写的排序是在网上看视频教程的时候写下的,这一周学习到排序,发现老师讲的和视频看到的有一定的出入,上一周写的排序方法不是很正宗,现在重新按照新学习的方法写一次。
感觉最简单的冒泡排序,这个和视频看到的没什么出入。
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+"\t");
}
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]的值就会向左边移动一个角标。
}
}
}