`
accphc
  • 浏览: 125061 次
  • 性别: Icon_minigender_1
  • 来自: CD
社区版块
存档分类
最新评论

【备忘】温习常用排序算法

阅读更多
import java.util.Arrays;

/**
 * 几种常见排序算法,插入、选择、冒泡
 * @author hjc
 *
 */
public class PaiXu {
	
	/**
	 * 插入排序 从小到大
	 * @param nums
	 */
	public static void charu(int[] nums){		
		for(int i=1;i<nums.length;i++)//待插入
			for(int j=0;j<i;j++){//已排好序
				if(nums[i]<nums[j]){//执行插入操作
					int temp=nums[i];//记录当前要被插入的数
					for(int x=i;x>j;x--)//向右移动
						nums[x]=nums[x-1];
					nums[j]=temp;//插入操作
					break;//插入完毕结束循环
				}
			}	
		System.out.println(Arrays.toString(nums));
	}
	
	/**
	 * 选择排序 从小到大
	 * @param nums
	 */
	public static void xuanze(int[] nums){
		for(int i=0;i<nums.length-1;i++){
			int iMin=i;//初始最小数下标
			for(int j=i+1;j<nums.length;j++)
				if(nums[j]<nums[iMin])//寻找最小数下标
					iMin=j;
			if(i!=iMin){//如果最小数下标发生变化,则执行交换操作
				nums[i]=nums[i]+nums[iMin];
				nums[iMin]=nums[i]-nums[iMin];
				nums[i]=nums[i]-nums[iMin];
			}
		}
		System.out.println(Arrays.toString(nums));
	}
	
	/**
	 * 冒泡排序 从小到大 把大的沉下去
	 * @param nums
	 */
	public static void maopao(int[] nums){
		int n=nums.length;
		for(int i=0;i<n;i++){//趟数
			int flag=0;
			for(int j=0;j<n-1-i;j++)//次数
				if(nums[j]>nums[j+1]){//执行交换操作
					nums[j]=nums[j]+nums[j+1];
					nums[j+1]=nums[j]-nums[j+1];
					nums[j]=nums[j]-nums[j+1];
					flag++;
				}
			if(flag==0)
				break;//如果经过一轮排序后没有交换操作,那就说明已经排好序结束循环
		}
		System.out.println(Arrays.toString(nums));
	}
	
	public static void main(String[] args) {
		int is[]={3,29,23,53,99,1,2};
		charu(is);
		xuanze(is);
		maopao(is);
	}
}

分享到:
评论

相关推荐

    插入排序 C++实现 自己备忘

    插入排序是一种基础且实用的排序算法,尤其在处理小规模或者部分有序的数据时表现出较高的效率。它的基本思想是将待排序的元素分为已排序区间和未排序区间,每次从未排序区间取出一个元素,插入到已排序区间的适当...

    计算机常用算法(有源码)

    计算机常用算法是编程领域中的核心组成部分,它们是解决问题和优化数据处理的有效工具。这份资源包含了一系列常见的算法,并提供了源码实现,这对于学习和理解算法的实际应用具有极大的价值。以下是其中可能涉及的...

    备忘录算法

    备忘录算法是一种优化策略,通常用于解决重复子问题,以提高递归计算的效率。在上述代码中,我们看到一个名为"Distance"的函数,它应用了备忘录技术来计算两个字符串`str1`和`str2`的编辑距离。编辑距离,也称为...

    学习电脑信息五大常用算法之二:动态规划算法

    "学习电脑信息五大常用算法之二:动态规划算法" 动态规划算法是五大常用算法之一,是解决多阶段决策问题的有效方法。它的基本思想是将问题分解为多个阶段,每个阶段都有其状态和决策,然后通过决策序列来解决问题。...

    基本排序算法及其在MapReduce的应用

    该文档为学习基本排序算法过程中的学习笔记,大部分内容从网络上其他渠道也能得到,仅用于记录备忘之用。冒泡、选择、插入三种作为基本的排序算法是必须要掌握的,而在MapReduce的实际应用中。在Map阶段,k-v溢写时...

    基于C#语言的查找、排序算法以及23设计模式的汇总.zip

    在C#编程中,查找和排序算法以及设计模式是核心概念,它们对于开发高效、可扩展的软件系统至关重要。下面将分别对这些主题进行详细阐述。 **查找算法**: 1. **线性查找**:最基础的查找算法,逐个遍历数组或列表,...

    STL算法备忘单+来自STL算法视频系列的示例代码_C++_下载.zip

    - **排序算法**:`sort()`是STL中最常用的算法之一,它对容器中的元素进行排序。例如,可以使用`sort(vec.begin(), vec.end())`对一个`vector`进行升序排序。`stable_sort()`则保证排序的稳定性,即相等元素的相对...

    C程序设计-c常用算法程序集

    在"C程序设计-c常用算法程序集"中,我们可以探索到许多C语言编程中常见的算法实现。这些算法是计算机科学的基础,对于任何想要深入理解编程或提高编程能力的开发者来说,都是必不可少的知识。以下将详细讨论一些可能...

    常用算法集

    本资源“常用算法集”包含了多个广泛应用于IT行业的经典算法,旨在帮助开发者提升技能,解决实际问题。 **排序算法** 排序算法是编程中最常见的算法之一,其目标是将一组数据按照特定顺序排列。常见的排序算法包括...

    Java常用算法手册源码

    **Java常用算法手册源码详解** Java作为一款广泛使用的编程语言,其在处理算法问题时具有高效、灵活的特点。这份“Java常用算法手册源码”集合了Java编程中常见的算法,旨在帮助开发者深入理解并掌握算法的应用。...

    几个算法的实现和算法作业

    1. **排序算法**: - **冒泡排序**:一种简单的排序方法,通过重复遍历数组,比较相邻元素并交换位置,使得较大的元素逐渐“冒”到数组末尾。 - **选择排序**:每次从未排序部分找到最小(或最大)元素,放到已...

    各种算法demo

    其次,AlgorithmDemo很可能是更广泛的算法集合,可能包括了排序算法(如冒泡排序、快速排序、归并排序)、查找算法(如线性搜索、二分搜索)、动态规划问题(如斐波那契数列、背包问题)以及图算法(如Dijkstra最短...

    HTML网页助手,包括JS万年历、闹钟、备忘录 常用查询.rar

    这个工具旨在提供一个便捷的工作环境,通过将常用的实用工具整合到一个网页中,使得用户可以快速访问和使用这些功能,而无需安装额外的应用程序或插件。以下是这个HTML网页助手中包含的主要知识点: 1. **...

    数据结构算法练习试卷

    本试卷涵盖了数据结构中学习的各种算法,包括算法的基本概念、算法设计步骤、算法的复杂性、动态规划和备忘录方法、图论、二叉树、时间复杂性分析、哈夫曼编码、快速排序法、0-1 背包问题等知识点。

    常用javascript备忘册_v1.0

    这份"常用javascript备忘册_v1.0"文档旨在汇总常见的JavaScript语法和实用函数,方便开发者快速查阅和使用。 首先,文档中提到的一个函数是`isLegalString`。这个函数的作用是检查一个输入的字符串`InString`中的每...

    java常用数据结构及算法集锦

    分类文档 基础原则 六大设计原则 创建模式 单例模式 简单工厂模式 工厂方法模式 抽象工厂模式 ...备忘录模式 ...结构与算法 ...排序与查找算法 二叉树与多叉树 应用场景 RSA算法签名验签流程 树结构业务应用

    算法实验七_矩阵链乘;备忘录_

    在“算法实验七”中,我们可能需要实现一个函数,接受一系列矩阵的维度信息作为输入,然后使用备忘录法找出最佳的乘法顺序,并返回所需的最小计算次数。实验可能还包括实际的矩阵数据,用于验证算法的正确性。 理解...

    labuladong算法秘籍

    图论是算法中较为复杂的领域之一,Labuladong在图论部分介绍了图的基本概念、拓扑排序、二分图判定和Union-Find算法等内容。这些知识不仅对解决网络流、最短路径等经典问题有帮助,也是面试中经常被问到的高频考点。...

    算法设计中的常用五打算发

    ### 算法设计中的常用五种算法 #### 一、分治算法 **1. 基本概念** 分治算法是一种强大的算法设计技术,它通过将一个复杂的问题拆分成若干个相同或相似的子问题来简化问题的解决过程。这种算法的特点在于将大问题...

Global site tag (gtag.js) - Google Analytics