冒泡排序,选择排序,插入排序

上一次写的排序是在网上看视频教程的时候写下的,这一周学习到排序,发现老师讲的和视频看到的有一定的出入,上一周写的排序方法不是很正宗,现在重新按照新学习的方法写一次。

感觉最简单的冒泡排序,这个和视频看到的没什么出入。

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]的值就会向左边移动一个角标。
		}
	}
}

  

posted @ 2015-10-11 16:12  chslch  阅读(132)  评论(0编辑  收藏  举报