算法

1、直接插入排序

 

1、解释:从前到后,依次插入进行排序

 

 

2、代码

 

      

/**

* 1、直接插入排序

*/

@Test

public void insertionSort() {

int[] a = { 49, 38, 65, 97, 76, 13, 27, 50 };

System.out.println("----------插入排序开始:---------");

print(a);

int tmp;

for (int i = 1; i < a.length; i++) {

for (int j = i; j > 0; j--) {

if (a[j] < a[j - 1]) {

tmp = a[j - 1];

a[j - 1] = a[j];

a[j] = tmp;

}

}

System.out.printf(""+i+"趟排序结果,");

print(a);

}

 

System.out.print("最终插入排序结果: ");

print(a);

System.out.println("--------------------");

}

 

 

2、冒泡排序

 

1、代码

 

 

/**

    冒泡排序

*/

@Test

public void maopao(){

int str[] = { 49, 38, 65, 97, 76, 13, 27, 50 };

System.out.println("----------冒泡排序 开始:---------");

 

for (int i = 0; i <str.length-1; i++){ //最多做n-1趟排序

for(int j = 0 ;j <str.length - i - 1; j++){ //对当前无序区间str[0......length-i-1]进行排序(j的范围很关键,这个范围是在逐步缩小的)

if(str[j] > str[j + 1]){ //把小的值放到前面

int temp = str[j];

str[j] = str[j + 1];

str[j + 1] = temp;

}

}

int n = i+1;

System.out.printf(""+n+"趟排序结果,");

print(str);

}

System.out.print("最终排序结果:");

print(str);

}

 

 

2、冒泡排序优化

 

 

/*

冒泡排序优化一

设置一个标记来标志一趟比较是否发生交换

如果没有发生交换,则数组已经有序

* */

@Test

public void bubbleSort1() {

int arr[] = { 49, 38, 65, 97, 76, 13, 27, 50 };

int n = arr.length;

int i = 0;

int j = 0;

int tmp = 0;

int flag = 0;

for (i = 0; i < n; ++i) {

flag = 0;

for (j = 0; j < n - 1 - i; ++j) {

if (arr[j] > arr[j + 1]) {

flag = 1;

tmp = arr[j];

arr[j] = arr[j + 1];

arr[j + 1] = tmp;

}

}

if (flag == 0) {

break;

}

}

 

print(arr);

 

}

 

/*

冒泡排序优化二

用一个变量记录下最后一个发生交换的位置,后面没有发生交换的已经有序

所以可以用这个值来作为下一次比较结束的位置

* */

@Test

public void bubbleSort2() {

int arr[] = { 49, 38, 65, 97, 76, 13, 27, 50 };

int n = arr.length;

int i = 0;

int j = 0;

int k = 0;

int tmp = 0;

int flag = n;

for (i = 0; i < flag; ++i) {

k = flag;

flag = 0;

for (j = 0; j < k; ++j) {

if (arr[j] < arr[j + 1]) {

flag = j;

tmp = arr[j];

arr[j] = arr[j + 1];

arr[j + 1] = tmp;

}

}

}

print(arr);

 

}

 

 

 

 

3、快速排序

 

1、图解: 一般以首元素为枢纽,分别从两端向中间逼近,通过该枢纽与其他记录的比较和交换。

 

/*

* 4.快速排序

*/

public void QuickSort(int []a, int low, int high){

 

int i=low,j=high;

if(i<j){

int po = a[low];

while(i<j){

while(i<j && po<a[j]){ //从后往前推 j++

j--;

}

if(i<j){

int temp = a[i];

a[i] = a[j];

a[j] = temp;

i++;

}

 

 

while(i<j && po>a[i]){ //从前往后推 i++

i++;

}

if(i<j){

int temp = a[i];

a[i] = a[j];

a[j] = temp;

j--;

}

}

QuickSort(a,low,j-1); //从小到J

QuickSort(a,j+1,high); //J到到

}

}

 

@Test

public void kspx(){

    int []a = { 49, 38, 65, 97, 76, 13, 27, 50 };

    int low = 0;

    int high = a.length-1;

    QuickSort(a, 0, a.length-1);

    print(a);

}

 

4、希尔排序

 

解释:

 

/**

    2、希尔排序.最小缩量排序 比如 8/8 个数字 4 2 1

*/

@Test

public void sort(){

int[] as = { 49, 38, 65, 97, 76, 13, 27, 50 };

System.out.println("----------希尔排序开始:---------");

print(as);

//增量

int incr = as.length/2;

while(incr >=1){

for(int i=0;i<as.length;i++){

//进行插入排序

for(int j=i;j<as.length-incr;j=j+incr){

if(as[j]>as[j+incr]){

int temple = as[j];

as[j] = as[j+incr];

as[j+incr] = temple;

}

}

}

//设置新的增量

incr = incr/2;

}

print(as);

 

}

 

 

 

5、简单选择排序

 

解释:每次选择最小的放到最前面

 

/*

* 4.简单选择排序 每次选择最小的放到最前面

*/

@Test

public void SelectSort()

{

    int []a = { 49, 38, 65, 97, 76, 13, 27, 50 };

    int aCount = a.length;

    int min;

    for(int i = 0; i < aCount - 1; ++i)

    {

        min = i;

        for(int j = i + 1; j < aCount; ++j)

        {

            if(a[j] < a[min]) //使得min总是指向最小元素

                min = j;

        }

        if(min != i) //min有移动过

        {

            int temp = a[i];

            a[i] = a[min];

            a[min] = temp;

        }

    }    

    print(a);

}

 

 

 

6、其他的排序

 

归并排序

堆排序

 

 

 

最短路径(不止一个,sb了吧,哈哈)

 

1、最短路径寻找的方法

 

1、具体图例与算法执行步骤:(就从A开始,到各节点的最短路径)。

 

源码来自:https://pan.quark.cn/s/a3a3fbe70177 AppBrowser(Application属性查看器,不需要越狱! ! ! ) 不需要越狱,调用私有方法 --- 获取完整的已安装应用列表、打开和删除应用操作、应用运行时相关信息的查看。 支持iOS10.X 注意 目前AppBrowser不支持iOS11应用查看, 由于iOS11目前还处在Beta版, 系统API还没有稳定下来。 等到Private Header更新了iOS11版本,我也会进行更新。 功能 [x] 已安装的应用列表 [x] 应用的详情界面 (打开应用,删除应用,应用的相关信息展示) [x] 应用运行时信息展示(LSApplicationProxy) [ ] 定制喜欢的字段,展示在应用详情界面 介绍 所有已安装应用列表(应用icon+应用名) 为了提供思路,这里只用伪代码,具体的私有代码调用请查看: 获取应用实例: 获取应用名和应用的icon: 应用列表界面展示: 应用列表 应用运行时详情 打开应用: 卸载应用: 获取info.plist文件: 应用运行时详情界面展示: 应用运行时详情 右上角,从左往右第一个按钮用来打开应用;第二个按钮用来卸载这个应用 INFO按钮用来解析并显示出对应的LSApplicationProxy类 树形展示LSApplicationProxy类 通过算法,将LSApplicationProxy类,转换成了字典。 转换规则是:属性名为key,属性值为value,如果value是一个可解析的类(除了NSString,NSNumber...等等)或者是个数组或字典,则继续递归解析。 并且会找到superClass的属性并解析,superClass如...
基于遗传算法辅助异构改进的动态多群粒子群优化算法(GA-HIDMSPSO)的LSTM分类预测研究(Matlab代码实现)内容概要:本文研究了一种基于遗传算法辅助异构改进的动态多群粒子群优化算法(GA-HIDMSPSO),并将其应用于LSTM神经网络的分类预测中,通过Matlab代码实现。该方法结合遗传算法的全局搜索能力与改进的多群粒子群算法的局部优化特性,提升LSTM模型在分类任务中的性能表现,尤其适用于复杂非线性系统的预测问题。文中详细阐述了算法的设计思路、优化机制及在LSTM参数优化中的具体应用,并提供了可复现的Matlab代码,属于SCI级别研究成果的复现与拓展。; 适合人群:具备一定机器学习和优化算法基础,熟悉Matlab编程,从事智能算法、时间序列预测或分类模型研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①提升LSTM在分类任务中的准确性与收敛速度;②研究混合智能优化算法(如GA与PSO结合)在神经网络超参数优化中的应用;③实现高精度分类预测模型,适用于电力系统故障诊断、电池健康状态识别等领域; 阅读建议:建议读者结合Matlab代码逐步调试运行,理解GA-HIDMSPSO算法的实现细节,重点关注种群划分、异构策略设计及与LSTM的集成方式,同时可扩展至其他深度学习模型的参数优化任务中进行对比实验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值