`
beyondqinghua
  • 浏览: 41701 次
  • 性别: Icon_minigender_1
  • 来自: 南昌
社区版块
存档分类
最新评论

三种基本的数据排序方法

阅读更多
package com.beyondlife.demo2;


/*
 * 这个类拥有三个静态方法用于数组排序
 * 
 */
public class NumberSort {

	public static final int ASC = 1; //升序排列
	public static final int DES = 2; //降序排列
	
	/*冒泡排序
	 * 算法设计:此算法利用前后的元素大小进行比较,交换位置;
	 * 要实现整个数组的排序需要使用外循环来控制遍历次数;
	 * 内循环来控制前后两元素的比较次数,一次内循环之后可以找出最大的或最小的放在右边.
	 * 
	 */
	public static  void bubbleSort(int list[],int type){
		
		int length = list.length;//数组的数据个数
		int flag = 1;            //标志位,判断此数组本身是否已经有序
		int temp = 0;            //中间数据,用于位置替换
		int i = 0;               //用于循环次数
		int j = 0;               //用于比较次数
		
		if(type == ASC){         //升序排序
			flag = 1;
			
			for(i = 1;i < length && flag == 1;i++){              //控制循环次数
				
				flag = 0;
				for(j = 0;j < length - i;j++){  //控制比较次数
					if(list[j] > list[j+1]){
						temp = list[j];
						list[j] = list[j + 1];
						list[j + 1] = temp;
						flag = 1;                   //修改标志位
					}//end if
				}//end inner for
			}//end outter for
			
		}else if(type == DES){     //降序排序
			
			flag = 1;
			
			for(i = 1;i < length && flag == 1;i++){              //控制循环次数
				
				for(j = i + 1;j < length - i;j++){  //控制比较次数
					if(list[j] < list[j+1]){
						temp = list[j];
						list[j] = list[j + 1];
						list[j + 1] = temp;
						flag = 1;                   //修改标志位
					}//end if
				}//end inner for
			}//end outter for
		}
	}
	
	/*选择排序
	 * 算法设计:选择排序不需要每比较两个元素就交换两其位置,
	 * 而是每次扫描一遍数据找出最大或最小的元素把其与左边排好序的元素的下一元素交换位置
	 * 
	 */
	public static void selectSort(int list[],int type){
		
		int length = list.length;        //数组的元素个数
		int pos = 0;                     //最大或最小元素的位置
		int i = 0;                       //控制循环的次数
		int j = 0;                       //用于查找元素的位置
		int temp = 0;                    //用于临时交换位置的元素
		
		if(type == ASC){//升序排序
			
			for(i = 0;i < length ;i++){
				pos = i;
				for(j = i + 1;j < length;j++){
					if(list[j] < list[pos])//查找未排序部分的最小元素
						pos = j;
				}//end inner for
				
				if(pos != i){            
					temp = list[i];
					list[i] = list[pos];
					list[pos] = temp;
				}
			}//end outer for
		}else if(type == DES){//降序排序
			
			for(i = 0;i < length ;i++){
				pos = i;
				for(j = i + 1;j < length;j++){
					if(list[j] > list[pos])//查找未排序部分的最大元素
						pos = j;
				}//end inner for
				
				if(pos != i){            
					temp = list[i];
					list[i] = list[pos];
					list[pos] = temp;
				}
			}//end outer for
		}
		
	}
	
	/*插入排序
	 *算法设计:此算法也是局部有序的,这里假设左边有序,
	 *那么现在需要把有序的下一个元素插入到有序的一端,
	 *这样需要移动有序的一端使空出合适的位置给插入原素
	 */
	public static void insertSort(int list[],int type){
		
		int length = list.length;        //数组的元素个数
		int i = 0;                       //控制循环的次数
		int j = 0;                       //用于定位元素
		int temp = 0;                    //用于临时交换位置的元素
		if(type == ASC){//升序排序
			
			for(i = 1;i < length;i++){             //控制循环次数
				j = i;
				temp = list[i];
				while(j > 0 && list[j - 1] > temp){//找到插入的位置
					list[j] = list[j-1];           //比插入元素大的元素须向后移动
					j--;
				}
				list[j] = temp;                    //插入元素
			}//end for
		}else if(type == DES){
			
			for(i = 1;i < length;i++){             //控制循环次数
				j = i;
				temp = list[i];
				while(j > 0 && list[j - 1] < temp){//找到插入的位置
					list[j] = list[j-1];           //比插入元素小的元素须向后移动
					j--;
				}
				list[j] = temp;                    //插入元素
			}//end for
		}
		
	}

}
 
分享到:
评论

相关推荐

    DHT21 LED数码管显示(三种数据处理方法)

    标题中的“DHT21 LED数码管显示(三种数据处理方法)”指的是一个项目,它使用DHT21温湿度传感器获取数据,并通过LED数码管显示这些数据。DHT21是一款集成的数字温湿度传感器,它能提供精确且稳定的温度和湿度测量值...

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

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

    C语言实现的五种基本的排序方法

    用codeblocks用C语言实现的物种排序方法,从最基本的冒泡排序与选择排序,再到数据结构中所学的插入,快排与希尔排序

    计算机控制系统中常见的数据处理方法分析.pdf

    本文主要探讨了计算机控制系统中常见的几种数据处理方法,并进行了比较。 首先,计算法是基于已知的物理和工程原理,通过数学表达式对测量参数进行计算,以获得所需参数。这一方法需要根据精度需求选择合适的A/D...

    玻尔兹曼常数实验数据处理方法.pdf

    "玻尔兹曼常数实验数据处理方法" 玻尔兹曼常数是一种重要的物理常数,反映物质世界的不连续特性。精确测量玻尔兹曼常数具有十分重要的意义。本文通过PN结的电流电压特性关系,采用线性回归、乘幂回归、指数回归三种...

    VB中三种排序方法

    这里我们将深入探讨三种常见的排序方法:冒泡排序、选择排序和插入排序。 1. **冒泡排序**: 冒泡排序是一种简单直观的排序算法,它通过重复遍历待排序的数列,比较每对相邻元素并交换位置来实现排序。如果前一个...

    数据处理与数学建模方法.ppt

    数据处理方法包括数据清洁、数据变换、数据可视化、数据挖掘等。 本节课程旨在介绍数学建模和数据处理的基本概念、方法和技术,并通过实践活动和竞赛来培养学生的创新精神和实践能力。 知识点一:数学建模的概念和...

    C语言常用的三种排序方法总结与探讨

    本文将详细讨论并比较三种常见的排序方法:交换排序法、插入排序法和选择排序法。 **交换排序法**,其中最典型的就是冒泡排序和快速排序。冒泡排序通过不断交换相邻的错误顺序元素来实现排序,其核心思想是每次遍历...

    低含量点化合物测定的三种数据处理方法比较研究.pdf

    本文主要探讨了低含量点化合物测定中的数据处理方法,着重比较了三种不同的回归分析技术:普通线性回归(OLR)、加权线性回归(WLR)和稳健回归(RR)。低含量点化合物的定量分析往往因为响应值较低而产生较大误差,...

    叶片三坐标测量机自动化数据处理系统研究.pdf

    然后,文章提出了基于AutoCAD和UG的叶片三坐标测量机自动化数据处理方法,该方法可以实现叶片检测数据的自动处理,提高检测效率和测量精度。 文章还介绍了叶片CMM数据自动化处理的基本原理,包括实体数据的批处理、...

    C语言的三种排序方法

    在IT行业中,C语言是一种基础且重要的编程语言,它的应用广泛,特别是在系统编程、软件开发以及数据处理等领域。本文将详细讲解C语言中的三种基本排序方法:交换法、选择法和冒泡法。 首先,我们来看交换法,也称为...

    三维树木点云数据处理软件系统设计.pdf

    6. 点云数据处理:点云数据处理是一种基于计算机技术的数据处理方法,用于快速处理和分析林木点云数据。 7. 树木结构参数提取:树木结构参数提取是一种基于算法和模型的技术,用于快速获取林木结构参数。 8. 林木...

    煤矿瓦斯传感器人工调校噪声数据处理方法

    针对上述问题,提出了一种煤矿瓦斯传感器人工调校噪声数据处理方法。采用数据平均值填充煤矿瓦斯传感器浓度数据缺失值;采用多时间粒度构建煤矿瓦斯传感器浓度数据的特征集和样本集;采用高斯函数、混合高斯函数、二...

    定容积放出法中几种数据处理方法的对比.pdf

    【标题】:“定容积放出法中几种数据处理方法的对比.pdf” 【描述】:该文档涉及的是在定容积放出法中,针对气动元件流量特性测试的数据处理方法进行对比研究,特别是针对电磁阀的声速流导计算。 【标签】:“数据...

    数据结构 排序综合

    (1)至少采用三种方法(希尔排序、快速排序、堆排序)实现上述问题求解; (2)统计每一种排序方法的性能(以上机运行程序所花费的时间为准进行对比),找出其中两种较快的方法; (3)统计每种算法所用的比较次数...

    WRF修改静态数据的三种方法(含部分关键代码)

    wrfxpy是一个Python库,专门为WRF数据处理设计,它包含了convert_geotiff的功能,同时提供了更多的灵活性。 配置wrfxpy的基本环境需要安装一系列Python库,如simplekml、pygrib、f90nml、pyhdf、xmltodict、basemap...

    排序综合 数据结构课设

    (1)至少采用三种方法(希尔排序、快速排序、堆排序)实现上述问题求解; (2)统计每一种排序方法的性能(以上机运行程序所花费的时间为准进行对比),找出其中两种较快的方法; (3)统计每种算法所用的比较次数...

    基本农田补贴数据处理与统计分析方法的探讨.pdf

    文章提出了三种不同的数据处理和统计分析方案:方案A直接利用GIS软件自身的工具和功能进行统计;方案B通过GIS软件嵌入编程语言进行二次开发,增强数据处理能力;方案C则是将GIS软件用于数据整理建库,再结合第三方...

    基于非平衡数据处理方法的网络在线广告中点击欺诈检测的研究.pdf

    研究者们通过FDMA2012竞赛的欺诈发布商检测数据集,比较了三种非平衡数据处理方法:随机欠采样(Random Under-Sampling, RUS)、合成少数类过采样技术(Synthetic Minority Over-Sampling Technique, SMOTE)以及...

    C++语言编写的三种排序算法

    插入排序是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,通常采用in-place排序(即只需用到O(1)的额外空间的排序),因而在从后向前扫描过程中,需要反复...

Global site tag (gtag.js) - Google Analytics