- package pack;
- import java.util.Arrays;
- public class test {
- public static void main(String[] args) {
- int[] arr = {5,6,9,44,2};
- int tmp;
- for(int i=0;i<arr.length-1;i++){
-
- for(int j=0;j<arr.length-i-1;j++)
- {
- if(arr[j]>arr[j+1])
- {
- tmp = arr[j+1];
- arr[j+1]=arr[j];
- arr[j]=tmp;
- }
- }
- }
- //
- System.out.println(Arrays.toString(arr));
- }
- }
复制代码 标准的代码如上,你应该选择<>这个按钮加入代码1、排序的换位,
tmp=y;
y=x;
x=tmp;
记不住就认准第一行的y到第二行的y,第二行的x到第二行的x是个斜线/
2、你的tmp是一个被赋值的量,所以它初始化与否没有关系,更没必要一遍遍的在第一个for循环里重复初始化,所以放在数组那边,只用定义就好
3、你内存溢出的问题,5,6,9,44,2,这是五个数字,数组的长度是5,其中的元素下标依次为0,1,2,3,4,
你的arr[x]给在最后会变成arr[4]=arr[5];但是问题是原数组最后个的就是arr[4]=2;arr[5]不存在,自然内存崩了
4、排序的外循环一般用于计算次数,内循环才是每一次的交换的值,arr[x]来作为交换的值,思考的方式就欠妥
|