上一篇文章说了,选择排序。
选择排序的原理就是,先确定第一个格子当中的数字是最小的,之后确定第二个格子是其他数字中最小的依次类推。
这一节当中我们来看下冒泡排序:
思路:
1、首先拿第一个数字跟第二个比,如果第二个数字大于第一个数字,那么保持各自位置,否则交换位置,让数字更小的那一个在前面,数字较大的在后面。第一个跟第二个比较完之后,紧接着第二个跟第三个进行比较,比较的原则也是根据第一次比较的原则,这样比较下去一直到数组的结尾,我们得到的是这个数组中的最大值,并且这个最大值在数组的结尾处。也就是说最末尾的值我们现在已经确定了,我们接下来确定的就是次末尾的值。然后再想之前那样循环遍历比较,只是此时的长度减一。
代码:
class SelectSort
{
public static void main(String[] args)
{
int[] arr = {12,87,34,39,134,4,45,8,21233,99};
printArr(arr);
//selectSort(arr);
maopaoSort(arr);
printArr(arr);
}
public static void selectSort(int[] arr){
for(int i = 0; i
{
for(int a = i + 1; a<=arr.length-1 ; a++)
{
/**
*if(arr[i]>arr[a])
*{
*int temp = arr[i];
*arr[i] = arr[a];
*arr[a] = temp;
*}
*/
if(arr[i]>arr[a])
swap(arr,i,a);
}
}
}
public static void maopaoSort(int[] arr){
for(int n = 0 ; n
{
for(int i = 0 ; i < arr.length-1-n ; i++)
{
if(arr[i]>arr[i+1])
swap(arr,i,i+1);
}
}
}
public static void printArr(int[] arr)
{
System.out.print("[");
for(int i=0 ; i
System.out.print(arr[i]);
if(i
System.out.print(",");
}
System.out.print("]");
System.out.println();
}
public static void swap(int[]arr,int x, int y)
{
int temp;
if(arr[x]>arr[y])
{
temp = arr[x];
arr[x] = arr[y];
arr[y] = temp;
}
}
}