教你一个简单地理解方法:选择排序是让左边的第一个位置不动,后面的数字依次和第一个位置比较,得到第一个位置最小,第二个位置原理和第一个位置一样,依次后推.
冒泡排序是从第一个和第二个比较,大的数放在后面,依次后推,最后一个数就是最大,让最后一个数不动,前面的0到n-1的位置再按上面原理比较.
记忆技巧:选择排序是从左一个数一个数的截去,也就是程序外层for(int i=0;i<len-1;i++)--里层for(int j=i+1,j<len;j++)控制头一个位置不动,后面依次和它比较,第三个不同是if(arr[i]>arr[j])判断条件不同(原因是此循环是内层i和外层j交换的).而冒泡排序是从右边最后一个位置往前一个一个数截去,也就是程序外层for(int i=0;i<len-1;i++)--里层for(int j=0,j<len-1-i;j++)是导致交换两个数的,交换这两数这个层次上讲和外层for没关系,因此判断条件为if(arr[j]>arr[j+1]),
区别:内层for(语句1;语句2;)和if(交换两个数的下坐标){交换两个数的下坐标}这3个位置不一样,其他程序都一样. |