package com.sort;
public class Sort {
public static void main(String[] args) {
// nineNineMultiply();
int ary[] = new int[] { 6, 2, 8, 1, 0 };
// print(ary);
// insertSort(ary);
// bubbleSort(ary);
// System.out.println(binarySearch(ary,1));
// selectSort(ary);
System.out.println("5的阶乘是 :" + factorial(5));
}
/**
* 九九乘法表
*/
public static void nineNineMultiply() {
for (int i = 1, j = 1; j < 10; i++) {
System.out.print(i + "*" + j + "=" + i * j + " ");
if (i == j) {
i = 0;
j++;
System.out.println();
}
}
}
/**
* 冒泡排序
* 冒泡排序(BubbleSort)的基本概念是:依次比较相邻的两个数,将小数放在前面,大数放在后面。即首先比较第1个和第2个数,将小数放前
* ,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。
* 由于在排序过程中总是小数往前放,大数往后放,相当于气泡往上升,所以称作冒泡排序。
*/
public static void bubbleSort(int ary[]) {
int temp;
for (int i = 0; i < ary.length; i++) {
for (int j = i + 1; j < ary.length; j++) {
if (ary[j] < ary[i]) {
temp = ary[j];
ary[j] = ary[i];
ary[i] = temp;
}
}
}
print(ary);
}
/**
*插入排序 每次处理就是将无序数列的第一个元素与有序数列的元素从后往前逐个进行比较,找出插入位置,将该元素插入到有序数列的合适位置中。
*/
public static void insertSort(int ary[]) {
int temp;
for (int i = 1; i < ary.length; i++) {
temp = ary[i];
while (i > 0 && temp < ary[i - 1]) {
ary[i] = ary[i - 1];
--i;
}
ary[i] = temp;
}
print(ary);
}
/**
* 遍历数组
*/
public static void print(int ary[]) {
for (int i : ary) {
System.out.print(i + " ");
}
System.out.println();
System.out.println("***********************");
}
/**
* 二分查找
*
* @param 查找的数组
* @param 查找的数
* @return 该数在数组中的位置(下标)
*
*
*
*
*
*
*
* 【算法思想】首先,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,
* 如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。
*/
public static int binarySearch(int[] ary, int num) {
insertSort(ary);// 排序
int low = 0;
int high = ary.length - 1;
int postion = (low + high) / 2;
while (low <= high) {
if (ary[postion] == num) {
return postion;
} else if (ary[postion] < num) {
low = postion + 1;
} else {
high = postion - 1;
}
postion = (low + high) / 2;
}
return -1;
}
/**
* 选择排序 每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完。
* 选择排序是不稳定的排序方法。
*
* @param ary
*/
public static void selectSort(int ary[]) {
int temp, min, minIndex;
for (int i = 0; i < ary.length; i++) {
minIndex = i;
for (int j = i + 1; j < ary.length; j++) {
min = ary[minIndex];
temp = ary[j];
if (temp > min) {
minIndex = j;
}
}
if (minIndex != i) {
temp = ary[minIndex];
ary[minIndex] = ary[i];
ary[i] = temp;
}
}
print(ary);
}
/**
* 递归
* 递归做为一种算法在程序设计语言中广泛应用.是指函数/过程/子程序在运行过程中直接或间接调用自身而产生的重入现象.
*/
public static int factorial(int num) {
if (num == 1) {
return 1;
}
return num * factorial(num - 1);
}
}
分享到:
相关推荐
c# 快速排序算法~~~~~
【电机控制PID算法】 电机控制中的PID算法是一种广泛应用的反馈控制策略,旨在通过精确调整控制器参数来优化电机的性能。PID代表比例(P),积分(I)和微分(D)三个组成部分,它们共同作用于误差信号,以减少系统误差并...
遗传算法是一种模拟自然界生物进化过程的优化算法,它在解决问题时借鉴了生物进化中的基因遗传、选择、交叉和变异等机制。遗传算法以其强大的全局搜索能力和适应性在解决复杂优化问题上表现出色,广泛应用于工程设计...
%TSP问题的解法。包含4部分。本部分为主程序;另外roadlength.m为路径长度函数;roadlength.m为最优路径的函数;还有d.mat为距离矩阵。 NIND=400; %个体数目 MAXGEN=100; %最大遗传代数 ... %变量的维数(中间节点的...
本主题“C经典数值算法~源码”聚焦于C语言在数值计算领域的应用,通过源代码的形式呈现了一些常见的数值算法。这些算法对于科学计算、工程应用、数据分析等领域都至关重要。 首先,我们要理解数值算法的基本概念。...
迪杰斯特拉算法~_SDK_python
4. **图论算法**:包括最短路径算法(如Dijkstra算法)、网络流算法(如Ford-Fulkerson方法)和二分图算法等。这些算法在处理网络结构问题,如交通规划、资源分配等场景中十分有效。 5. **计算机算法**:动态规划、...
折半查找的递归算法~~~~~查找
AES算法以其高效性和安全性,在数据加密、网络安全、存储保护等领域发挥着重要作用。 AES算法基于替换和置换两种操作,通过多轮迭代实现信息的加密。每一轮迭代包括四个子步骤:字节代换(SubBytes)、行移位...
接下来,我们将深入探讨这种算法以及与其相关的三维重建、匹配算法和视差图,同时也会提及MATLAB在其中的应用。 首先,让我们了解基于渲染概率的立体匹配算法。传统的立体匹配通常依赖于成本函数的计算,比如差分或...
在IT领域,编程语言C是实现算法的基础工具之一,因其高效和灵活性而备受青睐。"C经典算法集"涵盖了一些著名的数值计算与数学方法,这些算法对于任何IT专业人士,特别是那些从事软件开发、数据分析或机器学习的人来说...
复制一棵树的非递归算法~~~~~
《算法大全~主流算法并附带MATLAB与LINGO的代码》是一本全面覆盖主流算法的资源包,特别适合那些想要深入学习算法编程的人。它不仅提供了算法的理论讲解,而且辅以MATLAB和LINGO两种强大的计算工具的实现代码,使得...
"基于二维图像的FFT算法实现" 本文主要介绍基于二维图像的快速傅里叶变换(FFT)算法实现,使用 Matlab 编程语言实现。快速傅里叶变换是一种高速傅里叶变换算法,用于将时域信号转换为频域信号。 知识点一:快速...
Dijkstra算法演示flash 一看就会Dijkstra算法~~
30个算法程序整理,需要的同学们可以下载啦! 30个算法程序整理~川理-鹏\BP神经网络分类.pdf, 409828 , 2017-09-07 30个算法程序整理~川理-鹏\BP神经网络评价.pdf, 431981 , 2017-09-10 30个算法程序整理~川理-鹏\BP...
YOLO算法v6~v7论文英文原文,cv目标检测最新著作、深度学习必学经典论文!
本篇文章将详细探讨三种常见的内存分配算法:首次适应算法(First Fit)、最佳适应算法(Best Fit)以及循环首次适应算法(Circular First Fit),并结合源代码分析它们的工作原理。 1. 首次适应算法(First Fit) ...
- **内容介绍**:本章介绍了算法的基本概念,包括如何表示算法、算法的时间复杂度分析等基础内容。 - **关键知识点**: - 算法的定义及其重要性。 - 算法设计的基本步骤。 - 如何评估算法的效率。 - 常用的数据...