数组+选择排序
求最值
/*
需求
定义一个数组,包含33,5,22,44,55,求出该数组中的最大值和最小值
*/
package leetcode;
public class Maximum {
public static void main(String[] args) {
int arr[] = {33,5,22,44,55};
int max = arr[0];
int min = arr[0];
for (int i = 0; i < arr.length; i++) {
if(arr[i] > max){
max = arr[i];
}else if(arr[i] < min){
min = arr[i];
}
}
System.out.println("最大值为"+max);
System.out.println("最小值为"+min);
}
}
遍历数组求和
/*
需求:
生成10个1-100之间的随机数存入数组
(1)求出所有数据之和
(2)求出所有数据的平均值
(3)统计有多少个数据比平均值小
*/
package leetcode;
import java.util.Random;
public class P57 {
public static void main(String[] args) {
int arr[] = new int[10];
Random r = new Random();
for (int i = 0; i < arr.length; i++) {
int number = r.nextInt(100) + 1;
arr[i] = number;
}
float sum = 0.0f;
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
sum = sum + arr[i];
}
float pj = 0.0f;
pj = sum / arr.length;
System.out.println("数组之和为:"+sum);
System.out.println("数组平均值为:"+pj);
int flag = 0;
for (int i = 0; i < arr.length; i++) {
if(arr[i] < pj){
flag++;
}
}
System.out.println("一共有"+flag+"个数据比平均值大");
}
}
交换数据
/*
需求:
定义一个数组,包含1,2,3,4,5
将该数组数据进行交换,变为5,4,3,2,1,并输出交换后的数组
*/
package leetcode;
public class P58 {
public static void main(String[] args) {
int arr[] = {1,2,3,4,5};
System.out.print("原数组为: ");
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i]+" ");
}
System.out.println("\n");
for(int i = 0, j = arr.length - 1; i < j; i++,j--){
int d = arr[i];
arr[i] = arr[j];
arr[j] = d;
}
System.out.print("交换后为: ");
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i]+" ");
}
}
}
数组排序(选择排序)
选择排序也是一种简单直观的排序算法,实现原理比较直观易懂:
首先在未排序数列中找到最小元素,然后将其与数列的首部元素进行交换,然后,在剩余未排序元素中继续找出最小元素,将其与已排序数列的末尾位置元素交换。以此类推,直至所有元素圴排序完毕.
同理,可以类比与打扑克和打麻将, 和上面插入排序不同, 插入排序相当于抽一张牌整理好了再抽一张, 而选择排序相当于一次性给你一副乱牌, 然后慢慢整理的感觉.
这也容易理解为什么选择排序为啥比插入排序慢了. 插入排序是摸一张牌, 然后直接插入到手中已经排好序的牌,再摸下一张牌.
选择排序相当于在一堆牌中, 不断的找到最小的牌往前面放
上述解释及图摘自:https://blog.csdn.net/zzzgd_666/article/details/87634775
/*/
定义一个随机数组,在数组中存入随机生成的1-100之间的10个数据
将这个10个数据按由小到大进行排序并打印出来
选择排序
*/
package leetcode;
import java.util.Random;
public class Array_sorting {
public static void main(String[] args) {
int arr[] = new int[10];
Random r = new Random();
System.out.print("原数组为: ");
for (int i = 0; i < arr.length; i++) {
//先遍历一遍数组
arr[i] = r.nextInt(100) + 1;
System.out.print(arr[i] + " ");
}
System.out.print("\n排序后为: ");
for(int i = 0; i < arr.length ; i++){
int d = i;//遍历区间的最小值
for (int j = i; j < arr.length ;j++){
if(arr[j] < arr[d]){
d = j;// 找到当前遍历区间最小的值的索引
}
}//找到当前最小索引后退出该循环,进入下方条件语句
if(d != i){
//进行调换:如果上方找到的最小索引不等于初始索引,则进行调换
int temp = arr[d];
arr[d] = arr[i];
arr[i] = temp;
}
System.out.print(arr[i]+" ");
}
}
}
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 普卢姆斯塔!