基本的code,数组循环i,j
来源:互联网 发布:mac ps无法退出全屏 编辑:程序博客网 时间:2024/04/30 01:07
最近学习一些排序查找算法,总感觉i,j 很难找到规律,通常情况下都是i,j 初始值和结束值不对,导致整个算法出错。
例如学习java源代码
private static void sort1(int x[], int off, int len) { // Insertion sort on smallest arrays if (len < 7) { for (int i=off; i<len+off; i++) for (int j=i; j>off && x[j-1]>x[j]; j--) swap(x, j, j-1); return; }
觉得很怪怎么那样循环啊,特别是j的循环不理解。回家使劲折腾在本子上画图。
package datastructureandalgorithms;
public class ArraysSort1{ public static void main(String[] args) { int a[] = { 1, 4, 2, 10, 6, 7, 8 }; sort2(a, 0, 6); for (int a1 : a) { System.out.print(a1); } System.out.println();
sort1(a, 0, 6); for (int a1 : a) { System.out.print(a1); } System.out.println(); }
public static void sort1(int a[], int startindex, int len) { // for (int i=off; i<len+off; i++) // for (int j=i; j>off && x[j-1]>x[j]; j--) // swap(x, j, j-1); //两层循环 第二层 j 总是和 第一层 i有某种联系 例如 j=i 或者 j=i+1 或者 j=i-1; //i++ 的话 i要小于某个数不能越过最大值,j--呢 j必须要大于某个数不能越过最小值 for (int i = startindex; i < startindex + len; i++) { for (int j = i; j > startindex && a[j - 1] > a[j]; j--) { int temp = a[j]; a[j] = a[j - 1]; a[j - 1] = temp;
} } //j比i大一,自然j的最大值要比i的最大值要加一 // for (int i = startindex; i < startindex + len; i++) // { // for (int j = i + 1; j < (startindex + len) + 1 && a[j] < a[j - 1]; // j++) // { // int temp = a[j]; // a[j] = a[j - 1]; // a[j - 1] = temp; // } // }
}
public static void sort2(int a[], int startindex, int len) { for (int i = startindex; i < startindex + len; i++) { for (int j = i + 1; j < (startindex + len) + 1; j++) { if (a[j - 1] > a[j]) { int temp = a[j]; a[j] = a[j - 1]; a[j - 1] = temp; } } }
}}
- 基本的code,数组循环i,j
- 数组a[i++]=j 与 a[i]++ 的区别
- 找数组的i,j(j>i)使得a[j] - a[i]的值最大(算法)
- 【分治法】在数组A中,返回i<j,且A[i]>A[j]的(i,j)配对的数量
- 一个数组a[0...n-1],求a[i]-a[j]的最大值,其中i>j
- 一个数组a[0...n-1],求a[j]-a[i]的最大值,其中i<j
- 求一个数组(a(i,j))中元素相减的最大值,且i<=j
- 【T.I.J】Map通过关联数组的简单实现
- 到底输出的是j[i]是数组j中的哪一个元素
- 给定无序数组A,在线性时间内找到i和j,j>i,并且保证A[j]-A[i]是最大的。
- Codeforces 61E Enemy is weak 求i<j<k && a[i]>a[j]>a[k] 的对数 树状数组
- i += j ;与 i = i + j ; 的区别
- /编写一个程序, 对于二维数组 b[2][3]={{1,2,3},{4,5,6}}, 验证*(*(b+i)+j)、 *(b[i]+j)、 //(*(b+i))[j]与 b[i][j]是相同的。
- 5.5 编写一个程序, 对于二维数组 b[2][3]={{1,2,3},{4,5,6}}, 验证*(*(b+i)+j)、 *(b[i]+j)、 (*(b+i))[j]与 b[i][j]是相同的。
- 由height数组构造lcp(i,j)
- 关于二维数组a[i][j]
- i = i++, i = ++i, j = i++, j = ++i 的区别
- 交换i,j的值
- 使用EasyBCD引导安装Ubuntu系统
- CC2530学习之时钟与振荡器
- eclipse下创建arcgis相关工程问题
- myeclipse 9.1 破解
- minicom 无法传输文件至开发板
- 基本的code,数组循环i,j
- 用广度优先搜索解迷宫问题 By LYLtim
- C/C++转义字符
- C++程序设计语言-第一章:致读者
- 用C++设计一个不能被继承的类实现java final的作用
- 在case语句中定义变量的问题
- [python]抓取网页的内容
- linux 下删除文件夹(文件夹不为空时)
- 电影小结