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);
}
}
分享到:
相关推荐
插入排序是一种基础且实用的排序算法,尤其在处理小规模或者部分有序的数据时表现出较高的效率。它的基本思想是将待排序的元素分为已排序区间和未排序区间,每次从未排序区间取出一个元素,插入到已排序区间的适当...
计算机常用算法是编程领域中的核心组成部分,它们是解决问题和优化数据处理的有效工具。这份资源包含了一系列常见的算法,并提供了源码实现,这对于学习和理解算法的实际应用具有极大的价值。以下是其中可能涉及的...
备忘录算法是一种优化策略,通常用于解决重复子问题,以提高递归计算的效率。在上述代码中,我们看到一个名为"Distance"的函数,它应用了备忘录技术来计算两个字符串`str1`和`str2`的编辑距离。编辑距离,也称为...
"学习电脑信息五大常用算法之二:动态规划算法" 动态规划算法是五大常用算法之一,是解决多阶段决策问题的有效方法。它的基本思想是将问题分解为多个阶段,每个阶段都有其状态和决策,然后通过决策序列来解决问题。...
该文档为学习基本排序算法过程中的学习笔记,大部分内容从网络上其他渠道也能得到,仅用于记录备忘之用。冒泡、选择、插入三种作为基本的排序算法是必须要掌握的,而在MapReduce的实际应用中。在Map阶段,k-v溢写时...
在C#编程中,查找和排序算法以及设计模式是核心概念,它们对于开发高效、可扩展的软件系统至关重要。下面将分别对这些主题进行详细阐述。 **查找算法**: 1. **线性查找**:最基础的查找算法,逐个遍历数组或列表,...
- **排序算法**:`sort()`是STL中最常用的算法之一,它对容器中的元素进行排序。例如,可以使用`sort(vec.begin(), vec.end())`对一个`vector`进行升序排序。`stable_sort()`则保证排序的稳定性,即相等元素的相对...
在"C程序设计-c常用算法程序集"中,我们可以探索到许多C语言编程中常见的算法实现。这些算法是计算机科学的基础,对于任何想要深入理解编程或提高编程能力的开发者来说,都是必不可少的知识。以下将详细讨论一些可能...
本资源“常用算法集”包含了多个广泛应用于IT行业的经典算法,旨在帮助开发者提升技能,解决实际问题。 **排序算法** 排序算法是编程中最常见的算法之一,其目标是将一组数据按照特定顺序排列。常见的排序算法包括...
**Java常用算法手册源码详解** Java作为一款广泛使用的编程语言,其在处理算法问题时具有高效、灵活的特点。这份“Java常用算法手册源码”集合了Java编程中常见的算法,旨在帮助开发者深入理解并掌握算法的应用。...
1. **排序算法**: - **冒泡排序**:一种简单的排序方法,通过重复遍历数组,比较相邻元素并交换位置,使得较大的元素逐渐“冒”到数组末尾。 - **选择排序**:每次从未排序部分找到最小(或最大)元素,放到已...
其次,AlgorithmDemo很可能是更广泛的算法集合,可能包括了排序算法(如冒泡排序、快速排序、归并排序)、查找算法(如线性搜索、二分搜索)、动态规划问题(如斐波那契数列、背包问题)以及图算法(如Dijkstra最短...
这个工具旨在提供一个便捷的工作环境,通过将常用的实用工具整合到一个网页中,使得用户可以快速访问和使用这些功能,而无需安装额外的应用程序或插件。以下是这个HTML网页助手中包含的主要知识点: 1. **...
本试卷涵盖了数据结构中学习的各种算法,包括算法的基本概念、算法设计步骤、算法的复杂性、动态规划和备忘录方法、图论、二叉树、时间复杂性分析、哈夫曼编码、快速排序法、0-1 背包问题等知识点。
这份"常用javascript备忘册_v1.0"文档旨在汇总常见的JavaScript语法和实用函数,方便开发者快速查阅和使用。 首先,文档中提到的一个函数是`isLegalString`。这个函数的作用是检查一个输入的字符串`InString`中的每...
分类文档 基础原则 六大设计原则 创建模式 单例模式 简单工厂模式 工厂方法模式 抽象工厂模式 ...备忘录模式 ...结构与算法 ...排序与查找算法 二叉树与多叉树 应用场景 RSA算法签名验签流程 树结构业务应用
在“算法实验七”中,我们可能需要实现一个函数,接受一系列矩阵的维度信息作为输入,然后使用备忘录法找出最佳的乘法顺序,并返回所需的最小计算次数。实验可能还包括实际的矩阵数据,用于验证算法的正确性。 理解...
图论是算法中较为复杂的领域之一,Labuladong在图论部分介绍了图的基本概念、拓扑排序、二分图判定和Union-Find算法等内容。这些知识不仅对解决网络流、最短路径等经典问题有帮助,也是面试中经常被问到的高频考点。...
### 算法设计中的常用五种算法 #### 一、分治算法 **1. 基本概念** 分治算法是一种强大的算法设计技术,它通过将一个复杂的问题拆分成若干个相同或相似的子问题来简化问题的解决过程。这种算法的特点在于将大问题...