`
fuziyi0405
  • 浏览: 4548 次
社区版块
存档分类
最新评论

数组和在选择排序中的应用

阅读更多
做小程序的时候,发现数组真的很有用,对于顺序排序随机排序都能用到。
尤其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);
				}
			}
		}
	}
}


运行出来的结果是这样子的











  • 大小: 75.7 KB
1
0
分享到:
评论

相关推荐

    使用快速排序法对一维数组进行排序

    在实际应用中,选择基准的方式会影响快速排序的效率。常见的方法有以下几种: - **首尾取中法**:取数组的第一个元素和最后一个元素的中位数作为基准。 - **三数取中法**:取数组首、中、末三个元素的中位数作为基准...

    文件读出数组进行选择排序和二分查找(java)

    在Java编程中,文件读取、数组操作、选择排序以及二分查找是常见的编程任务,它们涉及了IO流、数据结构和算法等多个方面。以下是这些知识点的详细解释: 1. **文件读取**:Java提供了丰富的IO流类库用于读取文件。...

    二维数组如何进行冒泡排序

    ### 二维数组冒泡排序详解 #### 一、引言 冒泡排序是一种简单的排序算法,在数据处理领域有着广泛的应用。对于一维数组而言,冒泡排序实现起来...希望本文能够帮助初学者更好地理解二维数组排序的原理和实现细节。

    对一个数组进行选择排序

    ### 选择排序算法详解 #### 一、选择排序的基本概念 ...因此,在实际应用中,选择排序通常只适用于小规模数据或者教学目的。对于大规模数据集,更高效的排序算法如快速排序、归并排序等更为合适。

    编制一维数组排序程序。数组大小n用全局变量定义,数组数据从文本文件中读入或随机生成。包含冒泡排序、选择排序、插入排序三种排序方法。程序能够选择使用任何一种方法排序。

    在编程领域,数组排序是基础且重要的操作,尤其在数据处理和分析中。这个项目的目标是创建一个一维数组排序程序,它具有灵活性,能够处理不同来源的数据,并提供三种经典的排序算法供用户选择:冒泡排序、选择排序和...

    二维数组,选择排序和冒泡排序

    然后对剩余的元素重复这个过程,直到整个数组排序完成。冒泡排序在每一轮都能确保最大的元素被放置到正确的位置,因此在最坏情况下需要进行n*(n-1)/2次比较。 在编程实践中,虽然这些简单的排序算法在处理大数据集...

    数组的几种排序方法

    在实际应用中,这些简单排序算法通常用于小规模数据或者作为其他高效排序算法的基石。 学习这些基础排序算法有助于我们理解数据结构和算法的基本原理,对于提升编程能力、解决实际问题具有重要意义。在Java中,可以...

    C#实现对二维数组排序的方法

    在实际应用中,这个方法可以广泛应用于数据分析、报表生成或其他需要按特定字段排序表格数据的场景。通过这种方式,开发者可以轻松地对二维数组进行排序,而无需手动实现复杂的比较逻辑。 总结来说,本文介绍的C#...

    c语言数组选择法排序

    虽然在实际应用中,对于大数据量的排序,选择排序效率较低,但它的简单性和固定的空间需求使得它在某些特定场景下仍然有价值。 总结来说,"数组选择法排序"是一个基础的排序算法,适合初学者理解和实践。通过阅读和...

    java教程-数组应用+冒泡排序+选择排序+插入排序

    它可以分为两种情况:在有序的数组中插入一个数和在无序的数组中插入一个数。 在有序的数组中插入一个数需要插入的这个数,最终需要插入到那个位置。需要插入到第一个比插入的数大或相等的位置。以下是插入排序在...

    使用选择排序法对以为数组进行排序

    在数组排序的过程中,选择排序法分为以下几个步骤: 1. **初始状态**:数组中每个元素看作一个独立的子序列,即每个元素都是一个长度为1的有序序列。 2. **找到最小元素**:从第一个元素开始,遍历整个数组,找到...

    数组排序中的(选择,冒泡)

    在IT行业中,数组排序是一个基础且重要的概念,广泛应用于数据处理和算法实现。本文将深入探讨两种常见的排序算法——选择排序和冒泡排序,并结合给定的文件信息进行解析。 首先,选择排序是一种简单直观的排序算法...

    C语言数组的数组 排序,删除,查找联合搬

    在实际应用中,我们可能需要根据具体问题和场景来选择合适的算法和数据结构。例如,如果数组大小固定且不经常改变,直接使用数组配合合适的排序和查找算法即可;如果需要频繁插入和删除元素,链表或平衡二叉树可能...

    将一个数组的所有元素排序后输出

    在我们的例子中,我们将使用冒泡排序算法来实现对数组的排序。冒泡排序算法的基本思想是:比较相邻的两个元素,如果它们的顺序错误,就将它们交换。这个过程不断重复直到没有元素需要交换为止。 在我们的汇编语言...

    oc中数组排序

    数组排序是编程中常见的操作,特别是在处理数据时。本篇将深入探讨OC中数组的排序方法,以及如何通过实践来复习这个重要概念。 一、NSArray与NSMutableArray 在Objective-C中,数组分为不可变类型NSArray和可变...

    数组以及排序算法

    3. 在实际应用中,根据数据特点选择合适的排序算法至关重要。例如,对于小规模数据或部分有序的数据,插入排序可能是更好的选择;对于大规模数据,快速排序和归并排序更高效。 通过学习和实践这些基础知识,开发者...

    matlab开发-多维数组的合并排序

    合并排序由于其稳定性(相同元素的相对顺序不会改变)和O(n log n)的时间复杂度,成为了多维数组排序的一种理想选择。 总结来说,MATLAB中的多维数组合并排序涉及到对数组的分解、排序和合并,这需要对MATLAB的数组...

    VB 数组做参数合并排序

    在实际应用中,你可以调用`MergeSort`函数,传入你需要排序的数组的引用,例如: ```vb Dim numbers() As Integer numbers = Array(3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5) numbers = MergeSort(numbers, 0, UBound...

    数组应用——一维数组排序

    数组应用——一维数组排序; 定义一组无序的整型数列,共10个数值,经过一定的处理,使该数组由大到小排列,并输出到屏幕上。具体要求如下: 定义int型数组arrayorder并赋初值为0,长度为10,以承载该数列; 使用...

Global site tag (gtag.js) - Google Analytics