插入排序(Insertion Sort)
2017-07-13 22:26
190 查看
写点东西总结一下,朋友们,你们也自己写写东西总结一下,这样有助于我们记住一些东西
先把代码贴出来
public static void selectSort(int[]arr) {
int temp;
for(int i=0;i<arr.length-1;i++){ //表示趟数,一共arr.length-1次。
for(int j=i+1;j>0;j--){
if(arr[j]<arr[j-1]){
temp=arr[j-1];
arr[j-1]=arr[j];
arr[j]=temp;
}else{
break;
}
}
}
}
整体思想:
从数组的第一个数开始,之后每次放进来一个数,都给他排好序,打牌抓牌一下,后面的数要插入前面排好序的数中就行了
这个要循环arr.length-1;这么多次
步骤:
1.最外层循环记录排序的趟数,
2.然后里面这层int j=i+1;j>0;j-- 这个意思就是i限制前面的数,j+1,就是往后移动一位,把这后面一个数插入到前面排好序的数组中。
所以这个循环是这个意思,自己理解一下。
如果从后面排序怎么写这个循环, 趟数是一样的,那我j就是j=i-1;j<arr.length;j++ 了,
欢饮来找茬,逻辑思维不行啊,这个不能怪我了。大脑的内存不够吧,总是无法一下子加载那么多东西到大脑中去。
3.这循环里面就开始交换了,arr[j]<arr[j-1],就是说后面的数比前面的数小,那就交换一下,如果不是就break,接着进入下一个交换吧,不是下一趟这里。记住了
temp=arr[j-1];
arr[j-1]=arr[j];
arr[j]=temp;
这里遇到一个问题,temp在外层循环外面定义的,我也不太明白,就是在交换的逻辑之前都可以吧感觉。
int temp;
temp=arr[j-1];
arr[j-1]=arr[j];
arr[j]=temp;
因为这个是临时变量只起到交换数的作用交换后就没用了。我的理解就是可以这么写的。
先把代码贴出来
public static void selectSort(int[]arr) {
int temp;
for(int i=0;i<arr.length-1;i++){ //表示趟数,一共arr.length-1次。
for(int j=i+1;j>0;j--){
if(arr[j]<arr[j-1]){
temp=arr[j-1];
arr[j-1]=arr[j];
arr[j]=temp;
}else{
break;
}
}
}
}
整体思想:
从数组的第一个数开始,之后每次放进来一个数,都给他排好序,打牌抓牌一下,后面的数要插入前面排好序的数中就行了
这个要循环arr.length-1;这么多次
步骤:
1.最外层循环记录排序的趟数,
2.然后里面这层int j=i+1;j>0;j-- 这个意思就是i限制前面的数,j+1,就是往后移动一位,把这后面一个数插入到前面排好序的数组中。
所以这个循环是这个意思,自己理解一下。
如果从后面排序怎么写这个循环, 趟数是一样的,那我j就是j=i-1;j<arr.length;j++ 了,
欢饮来找茬,逻辑思维不行啊,这个不能怪我了。大脑的内存不够吧,总是无法一下子加载那么多东西到大脑中去。
3.这循环里面就开始交换了,arr[j]<arr[j-1],就是说后面的数比前面的数小,那就交换一下,如果不是就break,接着进入下一个交换吧,不是下一趟这里。记住了
temp=arr[j-1];
arr[j-1]=arr[j];
arr[j]=temp;
这里遇到一个问题,temp在外层循环外面定义的,我也不太明白,就是在交换的逻辑之前都可以吧感觉。
int temp;
temp=arr[j-1];
arr[j-1]=arr[j];
arr[j]=temp;
因为这个是临时变量只起到交换数的作用交换后就没用了。我的理解就是可以这么写的。
相关文章推荐
- 直接插入排序 direct insertion sort
- 插入排序(insertion sort)
- Insertion Sort List 链表插入排序
- LeetCode Insertion Sort List 链表插入排序
- 简单插入排序(Insertion Sort)——插入类排序法(Java实现)
- 插入排序-Insertion sort
- 直接插入排序(Insertion Sort)
- 插入排序(Insertion Sort)
- 插入排序(InsertionSort)
- 插入排序(insertion sort)
- 插入排序 直接插入排序的PHP实现 Straight Insertion Sort
- 插入排序(InsertionSort)
- 插入排序 insertion sort
- 直接插入排序(Insertion Sort)
- LeetCode-Insertion Sort List-链表插入排序-链表操作
- [LeetCode] Insertion Sort List 单向链表插入排序
- 插入排序Insertion Sort
- 直接插入排序(Insertion Sort)
- 插入排序(insertion sort)
- 插入排序Insertion sort 2