冒泡排序:
冒泡排序(升序)口诀:
N 个数字来排队
两两相比小靠前
外层循环 N-1 (数组名.length-1)
内层循环 N-1-I (数组名.length-1-i)
冒泡升序:
// 冒泡排序:升序
int[] nums = {11,56,94,78,33};
//排序前输出数组
System.out.println("排序前的数组:");
for (int i = 0; i < nums.length; i++) {
System.out.print(nums[i]+" ");
}
System.out.println();
//外层循环控制行数(外控循环控制比较的轮数)
for(int i =0;i<nums.length-1;i++){
//内层循环控制列数(内层循环控制每一轮的比较次数)
for(int j =0;j<nums.length-1-i;j++){
//比较:如果前面的元素比后面的元素大,交换位置
if(nums[j]>nums[j+1]){
int temp = nums[j];
nums[j]=nums[j+1];
nums[j+1]=temp;
}
}
}
System.out.println("排序后的数组:");
for (int i = 0; i < nums.length; i++) {
System.out.print(nums[i]+" ");
}
冒泡降序:
//冒泡排序:降序(从大到小)
int[] num = {11,56,94,78,33};
//降序前
System.out.println("降序前:");
for (int i = 0; i < num.length; i++) {
System.out.print(num[i]+" ");
}
System.out.println();
for (int i = 0; i < num.length-1; i++) { //比较的轮次
for (int j = 0; j < num.length-1-i; j++) { //每一轮比较的次数
if(num[j]<num[j+1]){ //表示下标为0和下标为1的数据继续比较
int temp=num[j]; //下标为0的数据临时赋值给temp
num[j]=num[j+1]; //num[j+1](下标1)比num[j](下标0)的值大,就赋值给num[j]
num[j+1]=temp; //临时变量里的值在赋给num[j+1]
}
}
}
System.out.print("降序后:");
for (int i = 0; i < num.length; i++) {
System.out.print(num[i]+" ");
}
插入元素:
/* 有一组学员的成绩{99,85,82,63, 60},将它们按降序排列。
* 要增加一个学员的成绩,将它插入成绩序列,并保持降序
*
* 思路:
* 1)新建一个比原来数组长度大1的数组
* 2)将原来数组里的元素按照顺序存储到新的数组中
* 3)使用Scanner获取你要增加的学员成绩
* 4)通过循环比较,获取插入元素要插入的位置(下标)
* 5)从插入位置开始及之后的元素依次往后移动一位(注意:移动的时候,从后向前移动)
* 6)移动元素之后,插入位置就空出来了,将插入元素存储到插入位置
* /
int[] scores = { 99, 85, 82, 63, 60 };
int[] newScores=new int[scores.length+1];//新数组
//将旧数组的值放入新建数组里
for(int i=0;i<scores.length;i++){
newScores[i]=scores[i];
}
//创建Scanner类对象,获取输入的成绩
Scanner sc=new Scanner(System.in);
System.out.println("输入增加的学员成绩:");
int insert =sc.nextInt();
//
int index=newScores.length-1;
for(int i=0;i<newScores.length;i++){
if(insert>newScores[i]){
index=i;
break;
}
}
for(int i=newScores.length-1;i>index;i--){
newScores[i]=newScores[i-1];
}
newScores[index]=insert;
//插入数组并遍历数组
System.out.println("插入元素后:");
for (int i = 0; i < newScores.length; i++) {
System.out.print(newScores[i]+" ");
}
//统计每次消费金额,及总消费金额
Scanner sc=new Scanner(System.in);
System.out.println("请输入会员本月的消费记录:");
double[] prices=new double[5];
double sum=0;
for (int i = 0; i < prices.length; i++) {
System.out.println("第"+(i+1)+"笔消费");
prices[i]=sc.nextDouble();
sum+=prices[i];
}
System.out.println("序号\t\t金额(元)");
for (int i = 0; i < prices.length; i++) {
System.out.println((i+1)+"\t\t"+prices[i]);
}
System.out.println("总金额:"+"\t\t"+sum);