做小程序的时候,发现数组真的很有用,对于顺序排序随机排序都能用到。
尤其2048的时候,需要用到存图片的位置,尤其能体现出来。
不过我们今天是在选择排序中看,也有所有的定义和去长度部分了,这些主要的函数实现在注解里面写的比较详细,那我们得先回顾一下基本概念:
一维数组
______________________________________________________________________
数组的概念:
1.数组名中存储的是什么内容?
数组名储存的是内存的首地址
数组的每一个元素
2. 实例化一个数组后,数组在内存中以连续的空间进行存储
数组是属于线性的数据结构
3.数组可以是任意类型的(这点个人觉得是很好用的一点,可以用数组存图片等等)
数组的定义:
1. 数据类型 =new 数据类型[长度]
(new关键字 :定义一个对象 开辟内存)
eg: int[] abc=new int[10];
另一种定义数组的方式
int abc[]={值...}
获取数组长度:
数组对象唯一的属性:length
int a=abc.length
数组的操作:
1.获取数组第一个元素
value1=数组名[下标];
数组名[下标]=值;
2.(没有赋值时候,int型默认是0 float:0.0 boolean string :null...可以自己试一试)
给数组赋值
要给数组赋字母的值:;
for(i=0;i<26;i++){
array[i]=((char)97+i)+"";
}
二维数组
________________________________________________________________________
二维数组在概念和操作上很多都相似,下面列出不一样的地方
定义:
int [][] abc=new int[10][10];
获取数组的元素总数:
获取第一个中括号的长度:数组名.length;
获取第一个中括号的长度:数组名[行下标].length ;
数组的操作:
获取元素值
eg: int value1=array[0][3];
数组的基本介绍先到这里,下面是应用了数组我们做的选择排序
继承监听器的类
运行出来的结果是这样子的
[img]http://dl2.iteye.com/upload/attachment/0099/3565/8abfb55c-2888-3755-80a7-dabfc88fc672.jpg[/img]
尤其2048的时候,需要用到存图片的位置,尤其能体现出来。
不过我们今天是在选择排序中看,也有所有的定义和去长度部分了,这些主要的函数实现在注解里面写的比较详细,那我们得先回顾一下基本概念:
一维数组
______________________________________________________________________
数组的概念:
1.数组名中存储的是什么内容?
数组名储存的是内存的首地址
数组的每一个元素
2. 实例化一个数组后,数组在内存中以连续的空间进行存储
数组是属于线性的数据结构
3.数组可以是任意类型的(这点个人觉得是很好用的一点,可以用数组存图片等等)
数组的定义:
1. 数据类型 =new 数据类型[长度]
(new关键字 :定义一个对象 开辟内存)
eg: int[] abc=new int[10];
另一种定义数组的方式
int abc[]={值...}
获取数组长度:
数组对象唯一的属性:length
int a=abc.length
数组的操作:
1.获取数组第一个元素
value1=数组名[下标];
数组名[下标]=值;
2.(没有赋值时候,int型默认是0 float:0.0 boolean string :null...可以自己试一试)
给数组赋值
要给数组赋字母的值:;
for(i=0;i<26;i++){
array[i]=((char)97+i)+"";
}
二维数组
________________________________________________________________________
二维数组在概念和操作上很多都相似,下面列出不一样的地方
定义:
int [][] abc=new int[10][10];
获取数组的元素总数:
获取第一个中括号的长度:数组名.length;
获取第一个中括号的长度:数组名[行下标].length ;
数组的操作:
获取元素值
eg: int value1=array[0][3];
数组的基本介绍先到这里,下面是应用了数组我们做的选择排序
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Graphics;
import java.util.Random;
import javax.swing.JButton;
public class myTask extends javax.swing.JFrame {
// 定义基本属性
public java.awt.Graphics g;
//主程序入口
public static void main(String args[]) {
myTask mt = new myTask();
mt.showUI();
}
// 初始化界面方法
private void showUI() {
this.setDefaultCloseOperation(3);
this.setSize(600, 700);
this.setResizable(false);
this.setLocationRelativeTo(null);
this.setLayout(new java.awt.FlowLayout());
/*
* 加按钮判断不一样的排序
*/
javax.swing.JButton jbu1 = new JButton("选择排序");
javax.swing.JButton jbu2 = new JButton("其他排序");
jbu1.setBorder(null);
jbu2.setBorder(null);
jbu1.setBackground(new Color(100,200,55));
jbu2.setBackground(new Color(100,200,55));
// 按钮添加监听器
this.add(jbu1);
this.add(jbu2);
// 设置窗体可见
this.setVisible(true);
// 注意要窗体可见后再取得画板
g = this.getGraphics();
taskListener tkl = new taskListener(this, g);
jbu1.addActionListener(tkl);
jbu2.addActionListener(tkl);
// 调用paint方法
paint(g);
}
// 定义paint方法
public void paint(Graphics g) {
super.paint(g);
}
}
继承监听器的类
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.util.Random;
public class taskListener implements java.awt.event.ActionListener {
// 构造方法
private String commandname;
private Graphics g;
public String getCpmmandname() {
return commandname;
}
private myTask mt;
public taskListener(myTask mt, Graphics g) {
this.mt = mt;
this.g = g;
}
// 响应命令
public void actionPerformed(ActionEvent e) {
g.clearRect(0, 0, 800, 800);
g.setFont(new Font("微软雅黑", Font.PLAIN, 20));
g.setColor(Color.gray);
if (e.getActionCommand().equals("选择排序")) {
// 随机数给一个长度为9的数组附上数值
java.util.Random random = new Random();
int[] array = new int[9];
for (int i = 0; i < 9; i++) {
array[i] = random.nextInt(50);
}
g.drawString("原始数据 ", 30, 100);
//先画一个原始数据
for (int i = 0; i < 9; i++) {
g.setColor(Color.white);
g.fillOval(115 + i * 40, 75, 35, 35);
g.setColor(Color.gray);
g.drawString(array[i] + "", 120 + i * 40, 100);
}
// 循环主程序
// 外部循环,从左到右依次取得最小值
for (int i = 0; i < array.length - 1; i++) {
// i从0开始,让min最小值时先为0
int min = i;
// 如果t从i的右边开始循环,遇到更小t值,给min赋t的值,直到取得第一个最小值
for (int t = i + 1; t < array.length; t++) {
if (array[t] < array[min]) {
min = t;
}
}
// 给第i个数组元素赋当前最小值
int temp = array[i];
array[i] = array[min];
array[min] = temp;
// 画出每次交换最小值输出的结果,j是每次输出的一行新数组,以i代表每次最小值交换
for (int j = 0; j < array.length; j++) {
g.setColor(Color.gray);
g.fillOval(120 + j * 40, 125 + i * 50, 35, 35);
g.setColor(Color.white);
g.drawString(" " + array[j], 120 + j * 40, 150 + i * 50);
}
}
}
}
}
运行出来的结果是这样子的
[img]http://dl2.iteye.com/upload/attachment/0099/3565/8abfb55c-2888-3755-80a7-dabfc88fc672.jpg[/img]