package com.leo.test;
import java.util.Arrays;
/**
* 数组排序系列方法
*
* @author huanghui
*
*/
public class ArraySort {
/**
* 选择排序 首先依次与第一个数进行比较,找出除了第一个数意外的所有数的最小数,记作N, 然后将第一个数与这个N呼唤位置,这样最小的数就在第一个了
* 时间复杂度为O(n^2)
*
* @param array
*/
private static void selectSort(int[] array) {
int temp;
for (int i = 0; i < array.length; i++) {
int m = i;
for (int j = i + 1; j < array.length; j++) {
if (array[j] < array[m]) {
m = j;
}
}
if (m != i) {
temp = array[i];
array[i] = array[m];
array[m] = temp;
}
// System.out.println(Arrays.toString(array));
}
System.out.println("快速排序结果:" + Arrays.toString(array));
}
private static void bubbleSort(int[] array) {
int temp;
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < array.length - i - 1; j++) {// 执行I次循环后,已经有i个数据排好序了
// 小的前移,大的后移
if (array[j] > array[j + 1]) {
temp = array[j + 1];
array[j + 1] = array[j];
array[j] = temp;
}
// System.out.println(Arrays.toString(array));
}
}
System.out.println("冒泡排序结果:" + Arrays.toString(array));
}
private static void insertSort(int[] array) {
for (int i = 1; i < array.length; i++) {
int temp = array[i];
int j = i - 1;
while (temp < array[j]) {
array[j + 1] = array[j];
j--;
if (j == -1) {
break;
}
}
array[j + 1] = temp;
}
System.out.println("插入排序结果:" + Arrays.toString(array));
}
/**
* 快速排序 递归分组进行排序
*
* @param array
* @param left
* @param right
*/
private static void quickSort(int[] array, int left, int right) {
int temp;
if (left < right) {
int s = array[left];
int i = left;
int j = right + 1;
while (true) {
// 向右找大于s的数的索引
while (i + 1 < array.length && array[++i] < s)
;
// 向左找小于s的数的索引
while (j - 1 > -1 && array[--j] > s)
;
if (i >= j) {
break;
} else {
// 交换i,j位置
temp = array[i];
array[i] = array[j];
array[j] = temp;
}
}
array[left] = array[j];
array[j] = s;
// 向左边进行递归
quickSort(array, left, j - 1);
// 向右边进行递归
quickSort(array, j + 1, right);
}
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] arr = { 22, 4, 6, 8, 9, 12, 34, 56, 67, 89, 3, 5, 13, 21, 25 };
System.out.println("初始数字数组:" + Arrays.toString(arr));
selectSort(arr);
bubbleSort(arr);
insertSort(arr);
quickSort(arr, 0, arr.length-1);
}
}
分享到:
相关推荐
标题中的"sort_nat.zip_sort nat_sort_nat"可能是指一个用于整理文件名的程序或脚本,它采用了自然排序(Natural Sort)的方式,使得文件名按照人类阅读习惯进行排序。自然排序不仅考虑字符的顺序,还能理解数字序列...
SORT(Simple Online and Realtime Tracking)算法是一种针对多目标跟踪(Multiple Object Tracking,MOT)问题的高效实时方法。该算法由Alex Bewley等人在2017年发表的论文中提出,其主要关注在线实时应用中的目标...
本资源包含了四种常见的多目标跟踪算法的实现:SORT (Simple Online and Realtime Tracking),Deep SORT,IOU Tracker以及SST (Spatio-temporal Salient Target Detection and Tracking)。 1. **SORT (Simple On...
基于DeepSORT算法和YOLOv5 7.0版本的目标跟踪实现。DeepSORT是一种强大的多目标跟踪算法,结合YOLOv5 7.0版本的目标检测能力,可以实现高效准确的实时目标跟踪。 基于 YOLOV5 和 DeepSort 的目标追踪算法是一种结合...
# YOLOv10_DeepSORT This repository contains code for object detection and tracking in videos using the YOLOv10 object detection model and the DeepSORT algorithm. ## Installation 1. Clone this ...
"SORT"是COBOL中一个强大的工具,用于对文件进行排序。本文将深入探讨COBOL中的FILE操作,以及如何利用USING,GIVING,INPUT PROCEDURE和OUTPUT PROCEDURE指令进行文件操作,特别是与SORT相关的知识点。 首先,让...
基于DeepSORT算法和YOLOv5 7.0版本的目标跟踪实现。DeepSORT是一种强大的多目标跟踪算法,结合YOLOv5 7.0版本的目标检测能力,可以实现高效准确的实时目标跟踪。 基于 YOLOV5 和 DeepSort 的目标追踪算法是一种结合...
《深度学习目标追踪技术:基于Deep-Sort与PyTorch的YOLOv3实现详解》 在计算机视觉领域,目标追踪是一项重要的任务,它能够帮助系统持续关注在视频或序列图像中的特定对象。Deep-Sort是一种高效且准确的目标追踪...
YOLOv5-DeepSORT飞鸟视觉检测和跟踪是一个基于深度学习的复合系统,用于实时地在视频或图像序列中定位并追踪鸟类。这个项目融合了两种强大的技术:YOLOv5(You Only Look Once)作为目标检测器,以及DeepSORT(Deep ...
YOLOv5与DeepSORT是两个在计算机视觉领域广泛应用的算法。YOLO(You Only Look Once)是一种实时目标检测系统,而DeepSORT则是一个多目标跟踪框架。它们结合使用,可以实现对视频中目标的精确检测和连续追踪。 ...
本项目以YOLOv10和DeepSORT两种技术为核心,实现了对视频中移动目标的有效跟踪,提供了详细的源码和教程,是学习和实践这一技术的良好资源。 首先,YOLO(You Only Look Once)是一种实时的目标检测系统,其设计...
使用YOLOv9+DeepSort实现的目标跟踪算法python源码.zip使用YOLOv9+DeepSort实现的目标跟踪算法python源码.zip使用YOLOv9+DeepSort实现的目标跟踪算法python源码.zip使用YOLOv9+DeepSort实现的目标跟踪算法python源码...
在本文中,我们将深入探讨如何使用一系列先进的计算机视觉技术,包括YOLOv5目标检测、DeepSORT追踪算法、Bytetrack以及IoU计算,来实现高效的人车流统计。这些技术在现代智能监控和交通管理系统中发挥着关键作用。 ...
在本文中,我们将深入探讨"DeepSORT-YOLOv5猫狗检测和跟踪+可视化目标运动轨迹"这一技术主题。这个项目结合了两种强大的计算机视觉技术:YOLOv5(You Only Look Once的第五版)对象检测算法和DeepSORT目标跟踪算法,...
为了解决这些问题,可以借助跟踪器 DeepSORT 以及检测器 YOLO v8,从而构建一个高性能的实时多目标跟踪模型。 参考博客:https://blog.csdn.net/matt45m/article/details/134237238#comments_32297294
当我们需要对List中的元素进行排序时,`Collections.sort()`方法就派上了用场。这个方法能够根据元素的自然顺序或者自定义的比较器进行排序。本文将深入探讨`Collections.sort()`的使用、原理以及如何自定义排序规则...
标题中的"two-phase-merge_sort-.rar_2phase merge sort_merge_sort_two merge"指的是一个采用两阶段归并排序算法的程序或文档集合。这个算法是针对大数据量、无法一次性加载到内存中的情况设计的,常见于外部排序...
在C语言中,`sort`通常指的是排序算法的实现,特别是在C++标准库中,`std::sort`是一个常用的排序函数。然而,在纯C环境中,没有内置的`sort`函数,程序员需要自己实现排序算法。这里我们将探讨C语言中实现排序的...