当前位置: 首页 > news >正文

【Java之数据结构与算法】

选择排序

package Code01;

public class Code01_SelectionSort {

	public static void selectionSort(int[] arr) {
		if(arr==null||arr.length<2) {
			return;
		}
		for(int i=0;i<arr.length;i++) {
			int minIndex = i;
			for(int j=i+1;j<arr.length;j++) {
				minIndex = arr[minIndex] > arr[j] ? j : minIndex;
			}
			swap(arr,i,minIndex);
		}
	}
	
	public static void swap(int[] arr,int i,int j) {
		int tmp=arr[j];
		arr[j]=arr[i];
		arr[i]=tmp;
	}
	
	public static void printArray(int[] arr) {
		for (int i=0;i<arr.length;i++) {
			System.out.print(arr[i]+" ");
		}
		System.out.println();
	}
	
	public static void main(String[] args) {
		int[] arr= {7,5,6,8,9,1,5,2,3,6};
		printArray(arr);
		selectionSort(arr);
		printArray(arr);
		}
}

冒泡排序

public static void bubbleSort(int[] arr) {
		if(arr==null||arr.length<2) {
			return;
		}
		
		for(int end=arr.length-1;end>=0;end--) {
			for(int second=1;second<=end;second++) {
				if(arr[second-1]>arr[second]) {
					swap(arr,second-1,second);
				}
			}
		}
	}

插入排序

public static void insertSort1(int[] arr) {
		if(arr==null||arr.length<2) {
			return;
		}
		
		for(int end=1;end<arr.length;end++) {
			int newNumIndex=end;
			while(newNumIndex-1>=0 && arr[newNumIndex-1]>arr[newNumIndex]) {
				swap(arr,end-1,end);
				newNumIndex--;
			}		
		}
	}



	public static void insertSort2(int[] arr) {
		if(arr==null||arr.length<2) {
			return;
		}
		for(int end = 1 ; end < arr.length ; end++) {
			//pre 新数的前一个位置
			for(int pre = end-1 ; pre>=0 && arr[pre] > arr[pre+1] ; pre--) {
				swap(arr , pre , pre+1);
			}		
		}
	}

相关文章:

  • .NET面试题(二)
  • 在 Go 语言中使用 regexp 包处理正则表达式
  • node实现简单的数据爬虫
  • Python轴承故障诊断 (八)基于EMD-CNN-GRU并行模型的故障分类
  • 【C语言】动态内存管理基础知识——动态通讯录,如何实现通讯录容量的动态化
  • 【JavaWeb学习笔记】14 - 三大组件其二 Listener Filter
  • 【Docker】基于华为 openEuler 应用 Docker 镜像体积压缩
  • Gazebo GUI模型编辑器
  • C语言之初识C语言
  • 在Portainer创建Nginx容器并部署Web静态站点实现公网访问
  • 【C语言】6-5 判断回文字符串 分数 20
  • Flink系列之:Savepoints
  • 第二章、动态规划算法(2.5.3-2.5.4.3)------公共序列问题(下)
  • 二分查找法详解(6种变形)
  • 去掉乘法运算的加法移位神经网络架构
  • http -- 跨域问题详解(浏览器)
  • Kafka消费者组
  • 链接未来:深入理解链表数据结构(二.c语言实现带头双向循环链表)
  • react v-18父组件调用子组件的方法和数据
  • 11种方法判断​软件的安全可靠性​
  • 中国科协发声:屡禁不止的奇葩论文再次敲响学风建设警钟
  • 玉渊谭天丨中方为何此时同意与美方接触?出于这三个考虑
  • 47本笔记、2341场讲座,一位普通上海老人的阅读史
  • 吉林市马拉松5月18日开赛,奖牌、参赛服公布
  • 七大交响乐团在沪“神仙斗法”,时代交响奏出何等时代新声
  • 牛市早报|国家发改委:今年将推出约3万亿元优质项目,支持民营企业参与