记得上学时,每当考试涉及到选择、冒泡排序时,都是死记硬背代码。这次看了毕老师的视频,才有了一定的理解。以下是我对这两种排序方法的理解。请各位大神指正。定义一个数组int arr[] 选择排序:第一轮,arr[0]逐一与其它元素相比较并换位,比完后arr[0]可以得到一个最值。 第二轮,因为arr[0]已出现最值,所以arr[0]不再参与比较。以arr[1]开始与其它相比较、换位,比完后arr[1]可以得到一个值。 以此类推直到 arr[arr.length-1]得到一个最值。关键代码: - <p>for(int x=0;x<arr.length-1;x++)
- {
- for(int y=x+1;y<arr.length;y++)
- {
- if(arr[x]>arr[y])</p><p> {</p><p> <font color="black"> int tem=arr[x];</font></p><p> arr[x]=arr[y];</p><p> arr[y]=tem;</p><p> }</p><p> }
- }</p>
复制代码冒泡排序:第一轮,相邻两元素相比、换位, arr[arr.length-1]得到一个最值。 第二轮arr[arr.length-1]不再参与比较,同理 arr[arr.length-2]也得到一个值。 以此类推直到 arr[0]得到一个最值。关键代码:
- <p>for(int x=0;x<arr.length-1;x++)
- {
- for(int y=0;y<arr.length-x-1;y++)
- {
- if(arr[y]>arr[y+1])</p><p> {</p><p> <font color="black"> int tem=arr[y];</font></p><p> arr[y]=arr[y+1];</p><p> arr[y+1]=tem;</p><p> }</p><p> }
- }
- </p>
复制代码
|