蓝桥杯学习记录

思路分析
1.要输出这个数列的最大值和最小值,所以需要把这个数列排序,而要得到这个数列的和,所以需要重新设计一个方法(循环来求数列的和)
2.有输入有输出

先采用普通的冒泡排序算法对数列进行排序

package jiChuTest;
//数列特征
import java.util.Scanner;

public class Sequence_characteristics {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
 
		Scanner cin = new Scanner(System.in);
		int  n = cin.nextInt();
		int arr[]=new int [n];
		for(int i=0;i<n;i++) {
			arr[i]=cin.nextInt();
		}
		sort(arr);
		int m =add(arr);
		System.out.println(m);
	}
	public static void sort(int numbers[]) {
		int i,j;
		for(i =0;i<numbers.length;i++){
			for(j=0;j<numbers.length-1;j++)
			{
				if(numbers[j]>numbers[j+1])
				{
					int temp= numbers[j];
					numbers[j]=numbers[j+1];
					numbers[j+1]=temp;
				}
			}
		}
		System.out.println(numbers[numbers.length-1]);
		System.out.println(numbers[0]);
	}
// public static void sort(int arr[]) {
// for(int k = 0;k<arr.length;k++) {
// int minPos = k;
// for(int j=1+k;j<arr.length;j++) {
// if(arr[minPos]>arr[j]) {
// minPos = j;
// 
// }
// 
// }
// //System.out.println("minPos:"+ minPos);
// int temp = arr[k];
// arr[k] =arr[minPos];
// arr[minPos]=temp;
// }
// System.out.println(arr[arr.length-1]);
// System.out.println(arr[0]);
//
// }
	public static int add(int number[]) {

		int sum=0;
		for(int i = 0;i<number.length;i++) {
			sum += number[i];
		}
		
		return sum;		
	}
	
}

测试结果

观察测试数据发现了,测试的数据为10000个,数据量大,冒牌排序算法的效率就显得很低了,它需要和每一个数作比较.

package jiChuTest;
//数列特征
import java.util.Scanner;

public class Sequence_characteristics {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
 
		Scanner cin = new Scanner(System.in);
		int  n = cin.nextInt();
		int arr[]=new int [n];
		for(int i=0;i<n;i++) {
			arr[i]=cin.nextInt();
		}
		sort(arr);
		int m =add(arr);
		System.out.println(m);
	}
// public static void sort(int numbers[]) {
// int i,j;
// for(i =0;i<numbers.length;i++){
// for(j=0;j<numbers.length-1;j++)
// {
// if(numbers[j]>numbers[j+1])
// {
// int temp= numbers[j];
// numbers[j]=numbers[j+1];
// numbers[j+1]=temp;
// }
// }
// }
// System.out.println(numbers[numbers.length-1]);
// System.out.println(numbers[0]);
// }
	public static void sort(int arr[]) {
		for(int k = 0;k<arr.length;k++) {
			int minPos = k;
		for(int j=1+k;j<arr.length;j++) {
			if(arr[minPos]>arr[j]) {
				minPos = j;
				
			}
		
		}
		//System.out.println("minPos:"+ minPos);
		int temp = arr[k];
		arr[k] =arr[minPos];
		arr[minPos]=temp;
	}
		System.out.println(arr[arr.length-1]);
		System.out.println(arr[0]);

	}
	public static int add(int number[]) {

		int sum=0;
		for(int i = 0;i<number.length;i++) {
			sum += number[i];
		}
		
		return sum;		
	}
	
}


测试结果

思考
在做算法题的时候可能会有多种实现的途径,要选择最适合的算法,最适合显得很笼统,但是一般我们可以选择牺牲空间来换取时间的方式.