javagap的简单介绍

博主:adminadmin 2023-01-28 19:21:09 309

今天给各位分享javagap的知识,其中也会对进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

java语言问题: gap=gap==2? 1:(int) (gap/2.2) 是什么意思? 谢谢!

先判断gap==2? 如果gap = 2 则把 1 赋值给 gap; 否则 就把把gap/2.2 的那个转成int 型赋值给gap

Java几种简单的排序源代码

给你介绍4种排序方法及源码,供参考

1.冒泡排序

主要思路: 从前往后依次交换两个相邻的元素,大的交换到后面,这样每次大的数据就到后面,每一次遍历,最大的数据到达最后面,时间复杂度是O(n^2)。

public static void bubbleSort(int[] arr){

for(int i =0; i  arr.length - 1; i++){

for(int j=0; j  arr.length-1; j++){

if(arr[j]  arr[j+1]){

arr[j] = arr[j]^arr[j+1];

arr[j+1] = arr[j]^arr[j+1];

arr[j] = arr[j]^arr[j+1];

}

}

}

}

2.选择排序

主要思路:每次遍历序列,从中选取最小的元素放到最前面,n次选择后,前面就都是最小元素的排列了,时间复杂度是O(n^2)。

public static void selectSort(int[] arr){

for(int i = 0; i arr.length -1; i++){

for(int j = i+1; j  arr.length; j++){

if(arr[j]  arr[i]){

arr[j] = arr[j]^arr[i];

arr[i] = arr[j]^arr[i];

arr[j] = arr[j]^arr[i];

}

}

}

}

3.插入排序

主要思路:使用了两层嵌套循环,逐个处理待排序的记录。每个记录与前面已经排好序的记录序列进行比较,并将其插入到合适的位置,时间复杂度是O(n^2)。

public static void insertionSort(int[] arr){

int j;

for(int p = 1; p  arr.length; p++){

int temp = arr[p];   //保存要插入的数据

//将无序中的数和前面有序的数据相比,将比它大的数,向后移动

for(j=p; j0  temp arr[j-1]; j--){

arr[j] = arr[j-1];

}

//正确的位置设置成保存的数据

arr[j] = temp;

}

}

4.希尔排序

主要思路:用步长分组,每个分组进行插入排序,再慢慢减小步长,当步长为1的时候完成一次插入排序,  希尔排序的时间复杂度是:O(nlogn)~O(n2),平均时间复杂度大致是O(n^1.5)

public static void shellSort(int[] arr){

int j ;

for(int gap = arr.length/2; gap  0 ; gap/=2){

for(int i = gap; i  arr.length; i++){

int temp = arr[i];

for(j = i; j=gap  temparr[j-gap]; j-=gap){

arr[j] = arr[j-gap];

}

arr[j] = temp;

}

}

}

java IconTextGap 什么意思

Jlabel:

protected int checkHorizontalKey(int key, String message)

验证该键是否为 horizontalAlignment 属性的合法值。

protected int checkVerticalKey(int key, String message)

验证该键是否为 verticalAlignment 或 verticalTextPosition 属性的合法值。

AccessibleContext getAccessibleContext()

获得此对象的 AccessibleContext。

Icon getDisabledIcon()

返回该标签被禁用时所使用的图标。

int getDisplayedMnemonic()

返回指示助记符键的键代码。

int getDisplayedMnemonicIndex()

以索引的形式返回字符,外观应提供该字符的装饰以表示助记符。

int getHorizontalAlignment()

返回标签内容沿 X 轴的对齐方式。

int getHorizontalTextPosition()

返回标签的文本相对其图像的水平位置。

Icon getIcon()

返回该标签显示的图形图像(字形、图标)。

int getIconTextGap()

返回此标签中显示的文本和图标之间的间隔量。

Component getLabelFor()

获取要添加标签的组件。

String getText()

返回该标签所显示的文本字符串。

LabelUI getUI()

返回呈现此组件的 LF 对象。

String getUIClassID()

返回一个指定 LF 类名称的字符串,该类呈现此组件。

int getVerticalAlignment()

返回标签内容沿 Y 轴的对齐方式。

int getVerticalTextPosition()

返回标签的文本相对其图像的垂直位置。

boolean imageUpdate(Image img, int infoflags, int x, int y, int w, int h)

如果当前图标的图像不等于传入的图像 img,则重写此方法以返回 false。

protected String paramString()

返回此 JLabel 的字符串表示形式。

void setDisabledIcon(Icon disabledIcon)

设置如果此 JLabel 是“禁用的”(JLabel.setEnabled(false)),则要显示的图标。

void setDisplayedMnemonic(char aChar)

指定 displayedMnemonic 为一个 char 值。

void setDisplayedMnemonic(int key)

指定一个指示助记符键的键代码。

void setDisplayedMnemonicIndex(int index)

关于应该装饰文本中的哪个字符以表示助记符,为外观提供一个提示。

void setHorizontalAlignment(int alignment)

设置标签内容沿 X 轴的对齐方式。

void setHorizontalTextPosition(int textPosition)

设置标签的文本相对其图像的水平位置。

void setIcon(Icon icon)

定义此组件将要显示的图标。

void setIconTextGap(int iconTextGap)

如果同时设置了图标和文本属性,则此属性定义它们之间的间隔。

void setLabelFor(Component c)

设置要添加标签的组件。

void setText(String text)

定义此组件将要显示的单行文本。

void setUI(LabelUI ui)

设置呈现此组件的 LF 对象。

void setVerticalAlignment(int alignment)

设置标签内容沿 Y 轴的对齐方式。

void setVerticalTextPosition(int textPosition)

设置标签的文本相对其图像的垂直位置。

void updateUI()

将 UI 属性重置为当前外观的值。

JButton:

AccessibleContext getAccessibleContext()

获取与此 JButton 关联的 AccessibleContext。

String getUIClassID()

返回指定呈现此组件的 LF 类名的字符串。

boolean isDefaultButton()

获取 defaultButton 属性的值,如果为 true 则意味着此按钮是其 JRootPane 的当前默认按钮。

boolean isDefaultCapable()

获取 defaultCapable 属性的值。

protected String paramString()

返回此 JButton 的字符串表示形式。

void removeNotify()

重写 JComponent.removeNotify 来检查此按钮当前是否被设置为 RootPane 上的默认按钮,如果是,则将 RootPane 的默认按钮设置为 null,以确保 RootPane 不继续停留在无效的按钮引用上。

void setDefaultCapable(boolean defaultCapable)

设置 defaultCapable 属性,该属性确定此按钮是否可以是其根窗格的默认按钮。

void updateUI()

根据当前外观的值重置 UI 属性。

java报错gap=4,gap=0是什么意思?

贴下报错信息呢?

难道是没有对gap对象进行申明 报错截图看看...

应该会有显示哪行错误.... 或者贴你的代码 估计你是没有初始化对象

JAVA归并排序算法,有两行代码看不懂

以var a = [4,2,6,3,1,9,5,7,8,0];为例子。

1.希尔排序。 希尔排序是在插入排序上面做的升级。是先跟距离较远的进行比较的一些方法。

function shellsort(arr){ var i,k,j,len=arr.length,gap = Math.ceil(len/2),temp; while(gap0){ for (var k = 0; k gap; k++) { var tagArr = []; tagArr.push(arr[k]) for (i = k+gap; i len; i=i+gap) { temp = arr[i]; tagArr.push(temp); for (j=i-gap; j -1; j=j-gap) { if(arr[j]temp){ arr[j+gap] = arr[j]; }else{ break; } } arr[j+gap] = temp; } console.log(tagArr,"gap:"+gap);//输出当前进行插入排序的数组。 console.log(arr);//输出此轮排序后的数组。 } gap = parseInt(gap/2); } return arr; }

过程输出:

[4, 9] "gap:5" [4, 2, 6, 3, 1, 9, 5, 7, 8, 0] [2, 5] "gap:5" [4, 2, 6, 3, 1, 9, 5, 7, 8, 0] [6, 7] "gap:5" [4, 2, 6, 3, 1, 9, 5, 7, 8, 0] [3, 8] "gap:5" [4, 2, 6, 3, 1, 9, 5, 7, 8, 0] [1, 0] "gap:5" [4, 2, 6, 3, 0, 9, 5, 7, 8, 1] [4, 6, 0, 5, 8] "gap:2" [0, 2, 4, 3, 5, 9, 6, 7, 8, 1] [2, 3, 9, 7, 1] "gap:2" [0, 1, 4, 2, 5, 3, 6, 7, 8, 9] [0, 1, 4, 2, 5, 3, 6, 7, 8, 9] "gap:1" [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

由输出可以看到。第一轮间隔为5。依次对这些间隔的数组插入排序。

间隔为5:

[4, 9] "gap:5" [4, 2, 6, 3, 1, 9, 5, 7, 8, 0] [2, 5] "gap:5" [4, 2, 6, 3, 1, 9, 5, 7, 8, 0] [6, 7] "gap:5" [4, 2, 6, 3, 1, 9, 5, 7, 8, 0] [3, 8] "gap:5" [4, 2, 6, 3, 1, 9, 5, 7, 8, 0] [1, 0] "gap:5" [4, 2, 6, 3, 0, 9, 5, 7, 8, 1] [4, 6, 0, 5, 8] "gap:2" [0, 2, 4, 3, 5, 9, 6, 7, 8, 1] [2, 3, 9, 7, 1] "gap:2" [0, 1, 4, 2, 5, 3, 6, 7, 8, 9] [0, 1, 4, 2, 5, 3, 6, 7, 8, 9] "gap:1" [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

间隔为2:

[4, 2, 6, 3, 0, 9, 5, 7, 8, 1] 4 6 0 5 8 2 3 9 7 1

排序后:

[0, 1, 4, 2, 5, 3, 6, 7, 8, 9]

间隔为1:

排序后:

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]。

2.快速排序。把一个数组以数组中的某个值为标记。比这个值小的放到数组的左边,比这个值得大的放到数组的右边。然后再递归 对左边和右边的数组进行同样的操作。直到排序完成。通常以数组的第一个值为标记。

代码:

function quickSort(arr){ var len = arr.length,leftArr=[],rightArr=[],tag; if(len2){ return arr; } tag = arr[0]; for(i=1;ilen;i++){ if(arr[i]=tag){ leftArr.push(arr[i]) }else{ rightArr.push(arr[i]); } } return quickSort(leftArr).concat(tag,quickSort(rightArr)); }

3.归并排序。把一系列排好序的子序列合并成一个大的完整有序序列。从最小的单位开始合并。然后再逐步合并合并好的有序数组。最终实现归并排序。

合并两个有序数组的方法:

function subSort(arr1,arr2){ var len1 = arr1.length,len2 = arr2.length,i=0,j=0,arr3=[],bArr1 = arr1.slice(),bArr2 = arr2.slice(); while(bArr1.length!=0 || bArr2.length!=0){ if(bArr1.length == 0){ arr3 = arr3.concat(bArr2); bArr2.length = 0; }else if(bArr2.length == 0){ arr3 = arr3.concat(bArr1); bArr1.length = 0; }else{ if(bArr1[0]=bArr2[0]){ arr3.push(bArr1[0]); bArr1.shift(); }else{ arr3.push(bArr2[0]); bArr2.shift(); } } } return arr3; }

归并排序:

function mergeSort(arr){ var len= arr.length,arrleft=[],arrright =[],gap=1,maxgap=len-1,gapArr=[],glen,n; while(gapmaxgap){ gap = Math.pow(2,n); if(gap=maxgap){ gapArr.push(gap); } n++; } glen = gapArr.length; for (var i = 0; i glen; i++) { gap = gapArr[i]; for (var j = 0; j len; j=j+gap*2) { arrleft = arr.slice(j, j+gap); arrright = arr.slice(j+gap,j+gap*2); console.log("left:"+arrleft,"right:"+arrright); arr = arr.slice(0,j).concat(subSort(arrleft,arrright),arr.slice(j+gap*2)); } } return arr; }

排序[4,2,6,3,1,9,5,7,8,0]输出:

left:4 right:2 left:6 right:3 left:1 right:9 left:5 right:7 left:8 right:0 left:2,4 right:3,6 left:1,9 right:5,7 left:0,8 right: left:2,3,4,6 right:1,5,7,9 left:0,8 right: left:1,2,3,4,5,6,7,9 right:0,8

看出来从最小的单位入手。

第一轮先依次合并相邻元素:4,2; 6,3; 1,9; 5,7; 8,0

合并完成之后变成: [2,4,3,6,1,9,5,7,0,8]

第二轮以2个元素为一个单位进行合并:[2,4],[3,6]; [1,9],[5,7]; [0,8],[];

合并完成之后变成:[2,3,4,6,1,5,7,9,0,8]

第三轮以4个元素为一个单位进行合并:[2,3,4,6],[1,5,7,9]; [0,8],[]

合并完成之后变成: [1,2,3,4,5,6,7,9,0,8];

第四轮以8个元素为一个单位进行合并: [1,2,3,4,5,6,7,9],[0,8];

合并完成。 [0,1,2,3,4,5,6,7,8,9];

javagap的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于、javagap的信息别忘了在本站进行查找喔。