排序算法Java实现

java实现10种排序算法 冒泡排序的优化1: 2.选择排序(Select Sort) 3.插入排序(Insert Sort) 4.希尔排序(Shell Sort) 5.快速排序(Quick Sort) 参考这篇博客 6.归并排序(Merge Sort) 7.堆排序(Heap Sort) 堆排序 第一步:构建初始堆buildHeap, 使用sink(arr,i, length)调整堆顶的值; 第二步:将堆顶元素下沉 目的是将最大的元素浮到堆顶来,然后使用sink(arr, 0,length)调整; 堆排序图解:链接 8. 阅读详情

目录

冒泡排序

选择排序

插入排序

快速排序

算法比较

后记


冒泡排序

  • 特点:运行非常慢,但它的概念是最简单的。
  • 基本流程:每一轮从头开始两两比较,将较大的项放在较小项的右边,这样每轮下来保证该轮最大的数在最右边。
  • 算法实现:(交换出最大,放在后面)
private static void bubbleSort(int[] data) {
    System.out.println(Arrays.toString(data));
    boolean exchange;
    for (int i = 0; i < data.length - 1; i++) {
        exchange = false;
        for (int j = 0; j < data.length - 1 - i; j++) {
            if (data[j] > data[j + 1]) {
                swap(data, j, j + 1);
                exchange = true;
            }
        }
        if(!exchange) break;
    }
    System.out.println(Arrays.toString(data));
}
  • 算法分析:
  1. 时间复杂度:最好的情况是初始状态是正序的,一次扫描即可完成排序,时间复杂度为 O(N);最坏的情况是反序的,此时最坏的时间复杂度为 O(N^2);平均情况,每轮 N/2 次循环,N 轮时间复杂度为 O(N^2)。
  2. 空间复杂度:空间复杂度为 O(1),不需要额外空间。
  3. 算法稳定性:算法是稳定的,因为当 a=b 时,由于只有大于才做交换,故 a 和 b 的位置没有机会交换,所以算法稳定。

选择排序

  • 特点:改进了冒泡排序,将必要的交换次数从 O(n^2) 减少到 O(n),但是比较次数仍保持为 O(n^2)。
  • 基本流程:将一轮比较完后,把最小的放到最前的位置(或者把最大的放到最后)。
  • 算法实现:(比较出最小,放在前面)
private static void selectSort(int[] data) {
    System.out.println(Arrays.toString(data));
    int minPosition; // 把最小的放到最前的位置
    for (int i = 0; i < data.length - 1; i++) {
        minPosition = i;
        for (int j = i + 1; j < data.length; j++) {
            if (data[j] < data[minPosition])
                minPosition = j;
        }
        if (minPosition > i) // 加一个判断
            swap(data, i, minPosition);
    }
    System.out.println(Arrays.toString(data));
}
  • 算法分析:
  1. 时间复杂度:最好和最坏的情况一样运行了 O(N^2) 时间,但是选择排序比冒泡更快,因为它进行的交换少得多,当 N 值较小时,特别是如果交换时间比比较时间大得多时,选择排序实际上是相当快的。平均复杂度也是 O(N^2)。
  2. 空间复杂度:空间复杂度为 O(1),不需要额外空间。
  3. 算法稳定性:算法是不稳定的,假设 a=b,且 a 在 b 前面,而某轮循环中最小值在 b 后面,而次最小值需要跟 a 交换,这时候 b 就在 a 前面了,所以选择排序是不稳定的。

插入排序

  • 特点:改进了冒泡排序,将必要的交换次数从 O(n^2) 减少到 O(n),但是比较次数仍保持为 O(n^2)。
  • 基本流程:(从后向前,插入位置)
  1. 从第一个元素开始,该元素可以认为已经被排序
  2. 取出下一个元素,在已经排序的元素序列中从后向前扫描
  3. 如果该元素小于前一个元素,则将两者调换,再与前一个元素比较
  4. 重复第三步,直到找到已排序的元素小于或者等于新元素的位置
  5. 将新元素插入到该位置中
  6. 重复第二步
  • 算法实现:
private static void insertSort(int[] data){
    System.out.println(Arrays.toString(data));
    for(int i = 1; i < data.length; i++) {
        for(int j = i; (j > 0) && (data[j] < data[j-1]); j--) {
            swap(data,j, j-1);
        }
    }
    System.out.println(Arrays.toString(data));
}
  • 算法分析:
  1. 时间复杂度:插入排序最好的情况是序列已经是升序排列了,在这种情况下,需要进行 N-1 次比较即可,时间复杂度为 O(N),最坏的情况是序列降序排列,这时候时间复杂度为 O(N^2)。插入排序平均时间复杂度为 O(N^2)。
  2. 空间复杂度:空间复杂度为 O(1),不需要额外空间。
  3. 算法稳定性:算法是稳定的,假设 a=b,且 a 在 b 的前面,其排序位置必然比 b 先确定,而后面再插入 b 时,必然在 a 的后面,所以是稳定的。

快速排序

  • 特点:分治思想,即分治法。
  • 基本流程:首先从数列的右边开始往左边找,我们设这个下标为 end,也就是进行减减操作(end--),找到第 1 个比基准数小的值,让它与基准值交换;接着从左边开始往右边找,设这个下标为 start,然后执行加加操作(start++),找到第 1 个比基准数大的值,让它与基准值交换;然后继续寻找,直到 start 与 start 相遇时结束,最后基准值所在的位置即 key 的位置,也就是说 key 左边的值均比 key 上的值小,而 key 右边的值都比 key 上的值大。
  • 算法实现:(左小右大)
public class QuickSortTest {

    @Test
    public void test() {
        int[] data = {12, 20, 5, 16, 15, 1, 30, 45, 23, 9};
        System.out.println(Arrays.toString(data));
        QuickSort.quickSort(data, 0, data.length - 1);
        System.out.println(Arrays.toString(data));
    }

}

// [12, 20, 5, 16, 15, 1, 30, 45, 23, 9]
// [1, 5, 9, 12, 15, 16, 20, 23, 30, 45]

public class QuickSort {

    public static void quickSort(int[] data, int low, int high) {
        int start = low;
        int end = high;
        int key = data[low];

        while (end > start) {
            //从后往前比较
            while (end > start && data[end] >= key)  //如果没有比关键值小的,比较下一个,直到有比关键值小的交换位置,然后又从前往后比较
                end--;
            if (data[end] <= key) {
                int temp = data[end];
                data[end] = data[start];
                data[start] = temp;
            }
            //从前往后比较
            while (end > start && data[start] <= key)//如果没有比关键值大的,比较下一个,直到有比关键值大的交换位置
                start++;
            if (data[start] >= key) {
                int temp = data[start];
                data[start] = data[end];
                data[end] = temp;
            }
            //此时第一次循环比较结束,关键值的位置已经确定了。左边的值都比关键值小,右边的值都比关键值大,但是两边的顺序还有可能是不一样的,进行下面的递归调用
        }
        //递归
        if (start > low) quickSort(data, low, start - 1);//左边序列。第一个索引位置到关键值索引-1
        if (end < high) quickSort(data, end + 1, high);//右边序列。从关键值索引+1到最后一个
    }

}
  • 算法分析:
  1. 时间复杂度:对冒泡排序的改进。最佳情况:T(n) = O(nlogn);最差情况:T(n) = O(n2);平均情况:T(n) = O(nlogn)。
  2. 空间复杂度:空间复杂度为 O(logn)。
  3. 算法稳定性:算法是不稳定的,在经过排序之后,可能会对相同值的元素的相对位置造成改变。

算法比较

后记

后记1:希尔排序(改进插入排序)、归并排序(额外空间)、堆排序(堆数据结构)、计数排序、桶排序、基数排序。

后记2:JDK的提供的Arrays.sort()方式使用的插入排序和快速排序。

后记3:测试数据

public static void main(String[] args) {
    bubbleSort(new int[]{9, 0, 5, 1, 2, 8, 4});
}

后记4:交换的逻辑(可参考我的这篇文章——三种方式交换两个数字的值)

private static void swap(int[] data, int a, int b) {
    data[a] = data[a] ^ data[b];
    data[b] = data[a] ^ data[b];
    data[a] = data[a] ^ data[b];
}

Java实现的九种排序算法详解 排序算法是编程中不可或缺的一部分,它们对于数据处理和分析至关重要。无论是简单的场景还是复杂的数据结构,排序算法都能帮助我们将数据从无序状态转为有序状态,从而便于检索和分析。本章将简单介绍排序算法的核心概念,并为接下来的章节,即各种排序算法的Java实现细节打下基础。从简单的冒泡排序到高效的快速排序,再到稳定的归并排序,每一种排序算法都有其独特之处。通过逐步了解和学习这些排序算法,我们将对算法的时间复杂度、空间复杂度以及实际应用中如何选择合适的排序算法有更深入的理解。 阅读详情

相关推荐

Java实现合并排序算法详解

分治策略,即分而治之,是一种在计算机科学中经常使用到的解决问题的策略。它将一个复杂的问题分解成两个或两个以上的相同或相似的子问题,直到子问题足够简单,可以被直接解决。之后,再将这些子问题的解合并为原问题的解。分治策略具有以下特点:分解:将原问题分解为若干个规模较小但类似于原问题的子问题。解决:若子问题足够小,则直接解决;否则递归地应用分治策略继续解决。合并:将各个子问题的解合并为原问题的解。分治算法的设计思路清晰,易于理解和实现。

weixin_42600407的博客 691

十大排序算法(Java实现)

数据结构中的经典十大排序算法,附Java代码的实现。

生命不息,Coding不止 4800

HX720/HX711 数据采集实战:从硬件配置到姿态解析(附源码详解)

本文详细解析了HX720/HX711数据采集传感器的硬件配置与姿态解析实战技巧,包括选型指南、电路设计避坑、抗干扰方案及源码实现。通过优化驱动代码和数据处理算法,提升采样率与精度,适用于动态称重和工业检测等场景。附源码详解,助力开发者快速掌握高精度数据采集技术。

weixin_30752699的博客 656

Java实现十大排序算法

上篇博文我们用C++实现了十大排序算法 今天我们来用Java实现一下经典的十大排序算法 具体代码与文件可访问我的GitHub地址获取 https://github.com/liuzuoping/Algorithms PS:欢迎star 1 冒泡排序 冒泡排序无疑是最为出名的排序算法之一,从序列的一端开始往另一端冒泡(你可以从左往右冒泡,也可以从右往左冒泡,看心情),依次比较相邻的两个数的大小(到...

liuzuoping的博客 9064

java modbus通讯协议_Modbus通 讯 协 议

电磁流量计Modbus通 讯 协 议(版本号:9000-K V9.1.1)2020年01月01日通讯协议针对KFD电磁流量计工业应用设计,版本:9000-K V9.1.1,该版本主要用于实时数据采集、流量测量、流量累计控制及部分参数的修改。一、主机系统通讯部件要求1.国际标准RS-485通讯接口部件,不小于11Bytes 的通信缓冲区(FIFO),支持1200、2400、4800、96...

weixin_39956612的博客 1012

Flotherm XT学习历程

大家好,通过半年的热仿真软件学习使用,最终发现最好用,最好上手的软件就是Flotherm XT,对新手非常友好,但由于软件近几年才发布,网上教程非常少,后面我将在这里持续分析软件使用心得,和大家一起学习。

xiaoredred的博客 6264

常用排序算法的java实现

/** * 冒泡排序 * 时间复杂度: 最小 = O(n), 最大 = O(n^2), 平均 = O(n^2) * * @param data 待排序序列 * @return */ public static int[] bubbleSort(int[] data) { if (data == null || data.length == 0 || data.length =...

LittleBeen 288

【MicroPython编程-ESP32篇:设备驱动】-BNO08X系列传感器驱动

BNO08X 系列(BNO085/BNO086)是一款系统级封装 (SiP),集成了三轴加速度计、三轴陀螺仪、磁力计以及运行 CEVA SH-2 固件的 32 位 ARM® Cortex™-M0+ 微控制器。SH-2 包含 MotionEngine™ 软件,该软件提供复杂的信号处理算法来处理传感器数据,并提供精确的实时 3D 姿态、航向、校准加速度和校准角速度,以及更高级的上下文输出。BNO08X 集成在一个 28 引脚 LGA 封装中,尺寸为 3.8mm x 5.2mm x 1.1mm。它兼容 Andro

视觉与物联智能 696

常见排序算法及JAVA实现

排序算法的分类 先看维基百科中的一张关于排序算法的表 我们主要了解常见的一些排序算法。像Bogo排序,臭皮匠排序这类完全不实用的排序可以置之不理。 我们这里要说的排序算法都是内排序,也就是只在内存中进行,涉及到对磁盘等外部存储设备中的数据进行排序称之为外排序,关于外排序的内容可以查看维基百科。其实外排序使用的是归并排序的思想。 简单选择排序(SelectSort) 选...

优快云文章已停止维护,后续文章会在 https://blog.hufeifei.cn 持续更新 5591

YOLOv8【第一章:基础入门篇·第2节】一文搞定,数据集制作与标注完全指南!

🏆 本文收录于 《YOLOv8实战:从入门到深度优化》 专栏,该专栏专注于分享我在YOLOv8目标检测模型中的实战经验,涵盖从入门基础到深度优化的全方位解决方案。无论你是计算机视觉的新手,还是具有多年深度学习经验的专家,本专栏都将为你提供高效、可复现的技术方案,助你掌握YOLOv8的核心技术,提升目标检测性能,突破瓶颈,优化模型,并加速项目开发🚀!

**My Coding Family** 1508

22h2版本的win10安装Docker Desktop时页面空白

摘要:Windows10 22H2系统重装Docker时出现安装界面卡死问题,通过管理员CMD执行静默安装命令解决。命令指定了WSL-2后端及多个自定义数据存储路径(安装目录、Hyper-V数据、Windows容器数据、WSL数据),安装需等待几分钟。最终验证安装成功。

猿小白的博客 662

常用排序算法 Java 实现

本文是对《算法 第四版》中排序章节的总结,包括 选择排序,插入排序,希尔排序,归并排序,快速排序,堆排序和冒泡排序各种排序算法的性能特点有多种排序算法存在,就是因为各种算法拥有不同的性能特点,各有所长,适用于不同场合,下面是书中对各种排序算法的性能特点的总结: 算法 是否稳定 是否为原地排序 时间复杂度 空间复杂度 备注 选择排序 否 是 N^2 1

classTC的博客 1247

c#仿热血江湖

Int32_1 = (int) table.Rows[i]["FLD_初级附魂"],Int32_2 = (int) table.Rows[i]["FLD_中级附魂"],Int32_3 = (int) table.Rows[i]["FLD_是否绑定"],Int32_0 = (int) table.Rows[i]["FLD_进化"],Form1.smethod_1(2, "加载百宝阁物品----没有百宝阁数据");Form1.smethod_1(2, "加载物品商店----没有物品数据");

weixin_42132177的博客 143

java实现选择排序算法

前面我们讲解了选择排序算法,现在我们用java代码来实现 package ttt; public class SelectSort { public static int[] BubbleSort(int[] theArray) { int tmp; for(int i = 0; i &lt; theArray.length; i++) { for (...

美丽的泡沫 1880

vue3+element-plus - 最新详细实现将表格Table组件 “所见所得导出“ 为excel(xls/xlsx)电子表格文件,表格中的图片图像、图标等媒体资源完美导出显示(详细示例代码)

vue3,nuxt3,element plus,表格组件,Table,el-table,导出,下载,excel,电子工作簿,xls,xlsx,将表格导出成xls,如何把表格原封不动的导出成excel,保留图片,带图片,图标,如何导出包括含有图片的Excel表格,图片和表格数据导出excel,把表格导出成excel格式,表格内的图片一起导出,vue3导出图片和数据到Excel,可导出图片,导出图像到Excel,网页上的图片怎么能导出到xls表格中,显示图片url链接,图片太多导出失败,图片会超出单元格,图片不

✅ 精选推荐文章 4767

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

常见排序算法及java实现

排序算法时间复杂度和空间复杂度 1. 冒泡排序 基本思想:两个数比较大小,较大的数下沉,较小的数冒起来。 过程: 比较相邻的两个数据,如果第一个数比第二个数小,就交换位置。一直比较到最后两个数据。最终最小数被交换到n的位置,这样第一个最小数的位置就排好了。 继续重复上述过程,依次将第2.3…n-1个最小数排好位置。 java实现: public static void BubbleSort(int[] arr){ for(int i = 0;i<arr.length-1;i++){

张海玲的博客 340

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

Java实现选择排序算法

选择排序是一种基础的排序算法,虽然时间复杂度较高,但在某些特定场景下仍然具有应用价值。它的特点是实现简单,但效率较低,因此在实际应用中通常被更高效的排序算法(如快速排序或归并排序)所取代。

zhangxueyi的专栏 1017

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Docker常用命令实战指南:从镜像到容器的核心用法

容器技术是现代云原生与DevOps实践的基石,而Docker作为最具代表性的容器引擎,其命令行工具是每位开发者和运维人员必须掌握的基础技能。理解Docker的核心理念——镜像作为只读模板、容器作为可运行实例、数据卷实现持久化、网络打通服务通信——是高效使用命令的前提。镜像管理涉及拉取、标记、导入导出,容器生命周期管理则涵盖创建、启停、日志排障与清理。掌握这些通用操作后,即可应对MySQL 8.0快速部署、Redis主从复制搭建、Docker Compose多服务编排等高频生产场景。此外,通过资源限制、磁盘占

weixin_34080951的博客 343

排序算法:从原理到 Java 实现

排序算法是计算机科学中的基础算法之一,掌握不同的排序算法对于提高编程能力和解决实际问题非常重要。本文介绍了六种常见的排序算法,包括冒泡排序、选择排序、插入排序、快速排序、归并排序以及堆排序,并通过 Java 代码实现展示了它们的工作原理。在实际应用中,我们需要根据数据规模、时间复杂度、空间复杂度和稳定性等因素选择合适的排序算法。希望本文能够帮助读者更好地理解排序算法,并在实际编程中灵活运用。

KELLENSHAW的博客 1379

Java语言实现常用的十种排序算法

排序问题一直都是程序工作或面试中的重点,特别是对于排序算法而言,在一些公司的笔试中,手写个冒泡啥的也不足为奇,因此今天抽空整理一下Java语言实现的各类排序算法,互勉学习一下。

Young_深情不及里子的博客 2554

Java实现常见排序算法

Java实现常见排序算法,包括冒泡排序,选择排序,插入排序,希尔排序,快速排序,归并排序,基数排序,堆排序

欢迎每一位朋友不吝赐教,无论是宝贵的建议还是中肯的批评,都将是我前进路上不可或缺的灯塔 1073

常见排序算法及其java实现

java,排序算法

@chen 1542

十种排序算法Java实现

排序算法在日常的开发中十分常见。常见的七种排序算法有:直接插入排序、希尔排序、简单选择排序、堆排序、冒泡排序、快速排序、归并排序。 还有另外三种排序算法:基数排序、计数排序、桶排序。 它们的特性如下: 目录 直接选择排序: 希尔排序: 简单选择排序: 堆排序: 冒泡排序: 快速排序: 归并排序: 基数排序: 计数排序: 桶排序: 首先我们讨论常见的七种排序算法: ...

踽踽独行♋♋无家的博客 379

常见排序算法及Java实现

常见排序算法及Java代码实现

xike1024的博客 1852

排序算法java源代码_各种排序算法JAVA实现

public class Sort {/*** @param args*/public static void main(String[] args) {// TODO Auto-generated method stubint[] arry = { 19, 10, 5, 45, 100, 30, 35, 29 };int[] sortArry = mergeSort(arry);for (int...

weixin_30458701的博客 216
上一篇: 使用Excel批量替换文件名的固定部分
下一篇: git命令聚集地
Swuagg
Swuagg 新星创作者: 移动开发技术领域 新星创作者: 移动开发技术领域 领域专家: 操作系统技术领域 领域专家: 操作系统技术领域
博客等级 码龄10年 2355粉丝 153原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值