标签:
原理:如果拿0角标上的元素依次和后面的元素进行比较,
第一次内循环结束后,最小值出现在了0角标位置。
你就想想我们是如何打星星
****
***
**
*
public static void selectSort(int[] arr)
{
//i<arr.length-1 n个数两两比,n-1次就能获得最值。
for(int i=0; i<arr.length-1; i++)
{
//0角标元素没必要和自己比,所以j从1开始。
//发现j为了不重复比较,总是要比i大1,所以j从i+1开始
for(int j=i+1; j<arr.length; j++)
{
if(arr[j]<arr[i])
{
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
}
原理:两个相邻元素进行比较,第一次比较完以后,最大值出现在了最大角标处。
public static void bubbleSort(int[] arr)
{
//i<arr.length-1 n个数两两比,n-1次就能获得最值。
for(int i=0; i<arr.length-1; i++)
{
//为了防止角标越界,j<arr.length-1
//为了减少比较次数,j<arr.length-1-i
for(int j=0; j<arr.length-1-i; j++)
{
if(arr[j]>arr[j+1])
{
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
}
标签:
原文地址:http://www.cnblogs.com/cjcblogs/p/4736291.html