我正在尝试创建一个程序,它将运行输入的整数列表,从最小到最大排序,然后打印出最后一项(最大),输入的中间项和第一项(最小整数)。
从代码中可以看出,我有平均值。
“bubbleSort”方法将它们按顺序排列并打印出已排序的数组。
有什么建议吗?
class statistics{
public static void main(String agrs[]){
System.out.println("Enter the number of integers you want to input?");
int n = EasyIn.getInt();
//declare arrey called numbers and give it the length of the number enter.
int[] numbers = new int[n];
for(int i=0; i<numbers.length; i++){
System.out.println("Enter number: " + (i+1));
numbers[i] = EasyIn.getInt();
}// end of for loop
// add a switch case for the print outs and a menu.
bubbleSort(numbers);
System.out.println("The average is " + averageMethod(numbers));
}// end of main method.
public static int averageMethod(int[] nums){
int total=0;
int average=0;
for(int i=0; i<nums.length; i++){
total = total+nums[i];
average = total/nums.length;
}// end of for loop
return average;
}// end of totalMethod
public static void bubbleSort(int[] ar) {
int temp;
// this code does the bubble sort
System.out.println();
for(int i = ar.length -1; i>0; i--){
for(int j=0;j<i; j++){
if(ar[j]>ar[j+1]){
temp=ar[j];
ar[j]=ar[j + 1];
ar[j+1]= temp;
}
}
System.out.print("The sorted array is : ");
for(int b=0; b<ar.length; b++){
System.out.print(ar[n] + ", ");
}
System.out.println();
}
} // end of buble sort
}// end of class.
答案 0 :(得分:4)
如果您有一个长度为arr
的升序排序数组n
,则最小元素位于arr[0]
,最大元素位于arr[n - 1]
。
答案 1 :(得分:3)
除了Smutje所说的,要获得中间项目:
如果n是奇数,那么它将是arr[(n/2)+1]
,但如果n是偶数,那么它取决于你所认为的“中间”,例如:
如果n = 4那么n / 2 = 2,这是第三个索引,而(n-1)/ 2 = 1,这是第二个索引,现在哪一个是中间?
答案 2 :(得分:2)
要打印第一个,中间个和最后一个,您可以执行以下操作:
if(numbers != null && numbers.length > 0) {
System.out.println(numbers[0]);
System.out.println(numbers[numbers.length / 2]);
System.out.println(numbers[numbers.length - 1]);
}
另一个建议是不要使用冒泡排序:)