`
strongboy789
  • 浏览: 56416 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类

java 数组排序小程序

    博客分类:
  • java
阅读更多

package Test1;

public class SortDemo {

/**
  * 冒泡排序 数组角标从前往后走,大的数往后走1.
  *  基本思想:两两比较待排序数据元素的大小,发现两个数据元素的次序相反时即进行交换,
  *  直到没有反序的数据元素为止。
  * @param arr 待排序数组
  *
  */
public static void Bubble(int[] arr){
  for(int i=1;i<arr.length;i++){
   for(int j=0;j<arr.length-i;j++){
    if(arr[j]>arr[j+1]){//
     //换位
     swap(arr,j,j+1);
    }
   }
  }
}
/**
  * 冒泡排序第二种方法 数组角标从后往前遍历,小的数往前跑
  * @param arr
  */
public static void Bubble2(int[] arr){
  //两两比较,外围循环为长度减1
  for(int i=0;i<arr.length-1;i++){
   for(int j=arr.length-1;j>i;j--){
    if(arr[j]<arr[j-1])
     swap(arr,j,j-1);
   }
  }
}
/**
  * 选择排序。基本思想:两两比较待排序数据元素的大小,发现两个数据元素的次序相反时即进行交换,
  * 直到没有反序的数据元素为止。
  * @param arr
  */
public static void select (int[] arr){
  int min;//最小索引
  for(int i=0;i<arr.length-1;i++){
   min =i;//假设没轮的第一个元素师最小元素
    //从假设的最小元素的下一元素开始循环 
   for(int j=i+1;j<arr.length;j++){
    if(arr[min]>arr[j]){
     min=j;
    }
   }
   swap(arr,i,min);
  }
}

/**插入排序,从小到大顺序排列
  * 基本思想:每次将一个待排序的数据元素,插入到前面已经排好序的数列中的适当位置
  * 使数列依然有序;直到待排序数据元素全部插入完为止。
  * @param arr
  */
public static void InsertSort(int[] arr){
  for(int i=0;i<arr.length-1;i++){
   //待插入的元素
   int insertElem = arr[i+1];
   for(int j=0;j<i+1;j++){
    //找到第一个比待插入元素insertElem大的数
    if(insertElem < arr[j]){
     //j位后已有序元素往后移动一位
     for(int x=i+1;x>j;x--){
      arr[x]=arr[x-1];
     }
     //在j位插入insertElem
     arr[j]=insertElem;
     break;
    }
   }
  }
}



/**
  * 数组中两个元素交换位置
  * @param arr
  * @param x
  * @param y
  */
public static void swap(int[] arr,int x,int y){
  int temp = arr[x];
  arr[x]=arr[y];
  arr[y]=temp;
}
/**
  * 打印数组
  * @param arr
  */
public static void sop(int[] arr){
  for(int i=0;i<arr.length;i++){
   System.out.println(arr[i]);
  }
}
public static void main(String[] args) {
  int[] arr = new int[]{5,2,1,22,14,7,9};
  //冒泡排序
  //Bubble(arr);
  //选择排序
  //select(arr);
  //插入排序
  InsertSort(arr);
  sop(arr);
 
}

}
package Test1;

public class SortDemo {

/**
* 冒泡排序 数组角标从前往后走,大的数往后走1.
* 基本思想:两两比较待排序数据元素的大小,发现两个数据元素的次序相反时即进行交换,
* 直到没有反序的数据元素为止。
* @param arr 待排序数组
*
*/
public static void Bubble(int[] arr){
for(int i=1;i<arr.length;i++){
for(int j=0;j<arr.length-i;j++){
if(arr[j]>arr[j+1]){//
//换位
swap(arr,j,j+1);
}
}
}
}
/**
* 冒泡排序第二种方法 数组角标从后往前遍历,小的数往前跑
* @param arr
*/
public static void Bubble2(int[] arr){
//两两比较,外围循环为长度减1
for(int i=0;i<arr.length-1;i++){
for(int j=arr.length-1;j>i;j--){
if(arr[j]<arr[j-1])
swap(arr,j,j-1);
}
}
}
/**
* 选择排序。基本思想:两两比较待排序数据元素的大小,发现两个数据元素的次序相反时即进行交换,
* 直到没有反序的数据元素为止。
* @param arr
*/
public static void select (int[] arr){
int min;//最小索引
for(int i=0;i<arr.length-1;i++){
min =i;//假设没轮的第一个元素师最小元素
//从假设的最小元素的下一元素开始循环
for(int j=i+1;j<arr.length;j++){
if(arr[min]>arr[j]){
min=j;
}
}
swap(arr,i,min);
}
}

/**插入排序,从小到大顺序排列
* 基本思想:每次将一个待排序的数据元素,插入到前面已经排好序的数列中的适当位置
* 使数列依然有序;直到待排序数据元素全部插入完为止。
* @param arr
*/
public static void InsertSort(int[] arr){
for(int i=0;i<arr.length-1;i++){
//待插入的元素
int insertElem = arr[i+1];
for(int j=0;j<i+1;j++){
//找到第一个比待插入元素insertElem大的数
if(insertElem < arr[j]){
//j位后已有序元素往后移动一位
for(int x=i+1;x>j;x--){
arr[x]=arr[x-1];
}
//在j位插入insertElem
arr[j]=insertElem;
break;
}
}
}
}



/**
* 数组中两个元素交换位置
* @param arr
* @param x
* @param y
*/
public static void swap(int[] arr,int x,int y){
int temp = arr[x];
arr[x]=arr[y];
arr[y]=temp;
}
/**
* 打印数组
* @param arr
*/
public static void sop(int[] arr){
for(int i=0;i<arr.length;i++){
System.out.println(arr[i]);
}
}
public static void main(String[] args) {
int[] arr = new int[]{5,2,1,22,14,7,9};
//冒泡排序
//Bubble(arr);
//选择排序
//select(arr);
//插入排序
InsertSort(arr);
sop(arr);

}

}

 

分享到:
评论

相关推荐

    java 冒泡排序 数组冒泡排序

    这个程序根据冒泡排序从大到小,从小到大的把数组里的元素进行了排序,程序思想很清晰

    数组与字符串.docx

    1)数组的基本操作,包括创建数组,填充数组,访问数组,拷贝数组,数组排序,数组查找。 2)编写一个猜密码的小程序,规则如下:程序首先产生一个三位数的密码,例如“025”,用户每次输入一个四位数来猜密码,程序...

    跟我学Java面向对象程序设计技术及应用——应用冒泡排序算法实现数组元素排序的Java程序实现示例.pdf

    杨教授工作室 精心创作的优秀程序员 职业提升必读系列资料 杨教授工作室,版权所有,盗版必究, 1/29 页 1 跟我学 Java 面向对象程序设计技术及应用——应用冒泡排序算法实 现数组元素排序的 Java 程序实现示例 1.1 ...

    在键盘输入数组长度和元素个数,实现冒泡排序.TXT

    这个c/c++小程序的功能是可以让用户从键盘输入数组长度和元素个数, 实现数组元素从大到小,或者从小到大排序,实现冒泡排序的算法.主要涉及到的c/c++的语法有数组/动态内存分配等语法

    java基础 经典算法之冒泡排序详解

    1.冒泡排序的原理:每次都从第一个元素开始(索引0),向后两两比较,只要后面的比前面的大,就交换(从大到小) 2.通过画图分析,5个数字排4趟,n数字排n-1趟,而外层的for循环代表的是循环的趟数,所以外层循环的结束条件是...

    适合于初学者的java小程序之3

    求1+2!+3!+...+20!的和 利用递归方法求5!。 有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大...对10个数进行排序 求一个3*3矩阵对角线元素之和

    3、 定义一个包含10个整数的数组,求该数组中的最大值、最小值、平均值与总和、并从小到大排序。

    请在DOS命令窗口里编译运行该程序 dos下相关命令 编译:javac 文件名.java 运行:java 文件名 此处填写数字(每个数字要用空格隔开)

    Java实验报告一java基础.doc

    、编写一个Java程序,定义一个2行3列的整型二维数组,对数组中每一个元素赋值一个0~100的随机整数,然后分别对第一行和第二行进行排序并输出结果。 提示:产生0~100的随机整数:(int)Math.random()*100。 2、编写一...

    计算机程序设计java语言数字排序问题.docx

    计算机程序设计java语言数字排序问题 题目:已知数据文件IN10.DAT中存有300个四位数,并已调用读函数readDat()把这些数存入数组a中,请编制一个函数jsValue(),其功能是:求出千位数上的数减百位数上的数减十位数上...

    BubbleSort:使用Java,该程序会提示用户输入10个数字,然后使用冒泡排序(或交换排序)来打印数值从最小到最大的数字数组

    泡泡排序使用Java,此程序会提示用户输入10个数字,然后使用冒泡排序(或交换排序)来打印数字数组,其值从最小到最大。

    Java开发技术大全(500个源代码).

    firstApplet.java 第一个用Java开发的Applet小程序。 firstApplet.htm 用来装载Applet的网页文件 第2章 示例描述:本章介绍开发Java的基础语法知识。 accumulationByDoWhile.java 用do~while语句写的累加程序 ...

    Java经典编程源码基础例程300.zip

    实例040 使用直接插入法对数组排序 59 实例041 使用sort()方法对数组排序 61 实例042 反转数组中元素的顺序 63 第6章 面向对象入门 65 实例043 自定义图书类 66 实例044 温度单位转换工具 67 实例045 成员变量的默认...

    数据结构与算法复习(Java):排序、字符串、数组、链表、二分查找、二叉树.zip

    算法分类:排序算法(如冒泡排序、快速排序、归并排序),查找算法(如顺序查找、二分查找、哈希查找),图论算法(如Dijkstra最短路径算法、Floyd-Warshall算法、Prim最小生成树算法),动态规划,贪心算法,回溯法...

    JAVA上百实例源码以及开源项目源代码

     基于JAVA的UDP服务器模型源代码,内含UDP服务器端模型和UDP客户端模型两个小程序,向JAVA初学者演示UDP C/S结构的原理。 简单聊天软件CS模式 2个目标文件 一个简单的CS模式的聊天软件,用socket实现,比较简单。 ...

    java程序设计实验指导代码

    4.2 实验1 数组排序 4.3 实验2 鸽巢原理的模拟 4.4 实验3 矩阵相乘问题 4.5 实验4 "速算24"游戏 第5章 类和对象 5.1 预备知识 5.2 实验1 对象的创建和使用 5.3 实验2 类的静态成员与实例成员 5.4 实验3 变量的...

    JAVA上百实例源码以及开源项目

     基于JAVA的UDP服务器模型源代码,内含UDP服务器端模型和UDP客户端模型两个小程序,向JAVA初学者演示UDP C/S结构的原理。 简单聊天软件CS模式 2个目标文件 一个简单的CS模式的聊天软件,用socket实现,比较简单。 ...

    Java集合框架的一个扑克牌小程序

    * 属性:ID、color、keyID数组、keyColor数组 * 方法:public SingleCard(){} //无参构造函数 * public SingleCard(String ID,String color) //有参构造函数 * @Override public int compareTo(SingleCard o) //...

    Java数据结构和算法中文第二版

    全书共分为15章,分别讲述了基本概念、数组、简单排序、堆和队列、链表、递归、进阶排序、二叉树、红黑树、哈希表及图形等知识。附录中则提供了运行专题Applet和例程、相关书籍和问题解答。本书提供了学完一门编程...

    java数据结构与算法第二版

    Java中数组的基础知识 将程序划分成类 类接口 Ordered专题applet 有序数组的Java代码 对数 存储对象 大O表示法 为什么不用数组表示一切? 小结 问题 实验 编程作业 第3章 简单排序 如何排序? 冒泡排序...

Global site tag (gtag.js) - Google Analytics