本帖最后由 笑脸不在 于 2013-12-10 16:23 编辑
为楼主服务~~特提供了选择排序和冒泡排序思路和代码,以示区别;代码仅供参考
1、选择排序:
1.1、需求:使用选择排序将数组 int[] a={1,9,5,7,3} 按从小到大的顺序排列
1.2、选择排序思路:
1、选取数组中的第一个(或最后一个数)a[0]
2、将a[0]和数组中位于a[0]后面的数a[x]逐个比较:若a[0]>a[x],则交换a[0]和a[x]的值;这样当a[0]和数组中的最后一个数比较完后,就把 数组中的最小值提取到a[0]位置存储起来了;这一步可以用一个for循环来实现
3、然后将a[1]和数组中位于a[1]后的数a[x]逐个比较,若a[1]>a[x],则交换a[1]和a[x]的值;这个循环之后第二个最小值就提取出来并存储在了a[1]位置
4、同理,当a[x]中的x倒了最后一个时就完成了这个选择排序
1.3、代码:
class Demo
{
public static void main(String[] args) //主函数
{
int[] arr={1,9,5,7,3};
selectionSort(arr);
print(arr);
}
public static void selectionSort(int[] arr)//选择排序函数
{
for (int x=0;x<arr.length-1 ;x++ )
{
for (int y=x+1;y<arr.length ;y++ )
{
if(arr[x]>arr[y])
swap(arr,x,y);
}
}
}
private static void swap(int[] arr,int x,int y)//交换arr[]数组中的两个值
{
int temp;
{
temp=arr[y];
arr[y]=arr[x];
arr[x]=temp;
}
}
public static void print(int[] arr)//打印arr[]数组的值
{
System.out.print("[");
for (int x=0;x<arr.length ;x++ )
{
if(x!=arr.length-1)
System.out.print(arr[x]+",");
else
System.out.println(arr[x]+"]");
}
}
}2.冒泡排序
2.1、需求:使用冒泡排序将数组 int[] a={1,9,5,7,3} 按从小到大的顺序排列
2.2、选择排序思路:
1、选取数组中的第一个(或最后一个数)a[0]
2、将a[0]和a[1]比较若a[0]>a[1],则交换a[0]和a[1]的值;否则不交换。
继续将a[1]和a[2]比较若a[1]>a[2],则交换a[1]和a[2]的值;
.......
将a[x]和a[x+1]比较,若是a[x]>a[x+1],则交换a[x]和a[x+1]的值;
......
当x=arr.length-2时,遍历结束,这数组的最大值就存储到数组a的最后一个位置了
3、将a[0]和a[1]比较若a[0]>a[1],则交换a[0]和a[1]的值;
继续将a[1]和a[2]比较若a[1]>a[2],则交换a[1]和a[2]的值;
.......
将a[x]和a[x+1]比较,若是a[x]>a[x+1],则交换a[x]和a[x+1]的值;
......
当x=arr.length-3时,遍历结束,数组的第二大值就存储在数组a的倒数第二个了
4、最后当所有遍历完成时,数组的冒泡排序就完成了
2.3、代码:
class Demo1
{
public static void main(String[] args) //主函数
{
int[] arr={1,9,5,7,3};
bubbleSort(arr);
print(arr);
}
public static void bubbleSort(int[] arr)//冒泡排序函数
{
for (int x=arr.length-1;x>=0 ;x-- )
{
for (int y=0;y<x;y++ )
{
if(arr[y]>arr[y+1])
swap(arr,y,y+1);
}
}
}
private static void swap(int[] arr,int x,int y)//交换arr[]数组中的两个值
{
int temp;
{
temp=arr[y];
arr[y]=arr[x];
arr[x]=temp;
}
}
public static void print(int[] arr)//打印arr[]数组的值
{
System.out.print("[");
for (int x=0;x<arr.length ;x++ )
{
if(x!=arr.length-1)
System.out.print(arr[x]+",");
else
System.out.println(arr[x]+"]");
}
}
}
|