java算法是什么意思,算法和java的区别
java不是算法。
Java是一门面向对象编程语言,是一种广泛使用的计算机编程语言,具有跨平台、面向对象和泛型编程的特点,广泛应用于企业级Web应用开发和移动应用开发。
算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表了一种描述解决问题的策略机制的系统方式。也就是说,对于某一标准输入,可以在有限的时间内获得所需的输出。如果一个算法有缺陷或者不适合某个问题,执行这个算法并不能解决问题。不同的算法可能使用不同的时间、空间或效率来完成相同的任务。算法的好坏可以用空间复杂度和时间复杂度来衡量。
我们可以用java语言实现不同的算法。
Java的几种常见排序算法
1.气泡分类
如何解决写爬虫IP受阻的问题?立即使用。
a、冒泡排序,就是通过每次遍历得到最大/最小值。
B.将最大/最小值放在尾部/头部。
c,然后除以最大值/最小值,剩下的数据遍历得到最大值/最小值。
d、代码实现
公共静态void main(String[] args) {
int arr[]={8,5,3,2,4 };
//冒泡
for(int I=0;长度;i ) {
//外部循环,遍历次数
for(int j=0;j arr . length-I-1;j ) {
//内部循环,升序(如果前一个值大于最后一个值,则交换)
//内层循环一次以获得最大值
if (arr[j] arr[j 1]) {
int temp=arr[j 1];
arr[j 1]=arr[j];
arr[j]=temp;
}
}
}
} E .排序过程(红色:移动数据)
2.选择排序
a、将第一个值作为最小值。
b、然后通过与后续比较找出最小值和下标
c .交换本次遍历的初始值和最小值。
d、描述:每次遍历时,前面找到的最小值视为有序列表,后面视为无序列表,然后每次遍历无序列表,找到最小值。
e、代码实现
公共静态void main(String[] args) {
int arr[]={6,5,3,2,4 };
//选择
for(int I=0;长度;i ) {
//默认情况下第一个是最小的。
int min=arr[I];
//记录最小的下标
int index=I;
//通过与后来的数据比较,最小值和下标
for(int j=I 1;j排列长度;j ) {
if (min arr[j]) {
min=arr[j];
index=j;
}
}
//然后把最小值和这个周期的起始值交换。
int temp=arr[I];
arr[I]=min;
arr[index]=temp;
//注意:将I前面的数据视为排队队列,I后面的数据视为无序队列。每次你只需要找到你不需要的最小值并替换它。
}
} F .排序过程(红色:移动数据)
3.插入排序
A.默认情况下,比较从第二个数据开始。
b、如果第二个数据小于第一个数据,则交换它。然后和第三个数据对比。如果比之前小,就插入(狡猾)。否则,退出循环。
C.描述:默认情况下,第一个数据被视为有序列表,后面的无序列表循环每个数据。如果它小于前面的数据,它将被插入(交换)。否则,退出。
d、代码实现
公共静态void main(String[] args) {
int arr[]={7,5,3,2,4 };
//插入排序
for(int I=1;长度;i ) {
//外部循环,从第二个开始比较
for(int j=I;j 0;j - ) {
//内存循环,与前一个顺序的数据进行比较,如果后面的数据小于前面的数据就交换。
if (arr[j] arr[j - 1]) {
int temp=arr[j-1];
arr[j-1]=arr[j];
arr[j]=temp;
}否则{
//如果不小于,则表示插入完成,退出内循环。
打破;
}
}
}
} E .排序过程(红色:有序,黑色:无序)
4.希尔排序(插入排序变体版本)
a、基本上和insert sort一样。
b,不同的是每个周期的步长是通过减半实现的。
c、描述:基本原理类似于插入排序,区别在于。插入排序是通过分隔多个数据来执行的。
d、代码实现
公共静态void main(String[] args) {
int arr[]={7,5,3,2,4 };
//希尔排序(插入排序变量)
for(int I=arr . length/2;I 0;i /=2) {
//i层循环控制步长
for(int j=I;j排列长度;j ) {
//j控制无序结束的起始位置。
for(int k=j;k0k-I=0;k -=i) {
if (arr[k] arr[k - i]) {
int temp=arr[k-I];
arr[k-I]=arr[k];
arr[k]=temp;
}否则{
打破;
}
}
}
//j,k是插入排序,但是步长是I。
}
}e、排序过程(步骤4/2/1)
5.快速分类
A.确认列表中第一个数据是中间值,第一个值视为空位(低位指针空位)。
b,然后在队列的其余部分,因为有两个指针(高和低)左和右。
C.启动高位指针向左移动。如果遇到小于中间值的数据,则将此数据赋给低位指针空位,将高位指针数据视为空位值(高位指针空位)。然后先向右移动低位指针,切换低位指针移动。
d、当低位指针移动到大于中间值时,将其赋给高位指针空缺的地方。然后高指针向左移动,高指针移动。重复C和D操作。
e .退出,直到高指针和低指针相等,并将中间值赋给相应的指针位置。
f,然后把中间值的左右两边看做一个行的列表,进行快速排序操作。
g、代码实现
公共静态void main(String[] args) {
int arr[]={7,5,3,2,4,1,8,9,6 };
//快速排序
int low=0;
int high=arr . length-1;
快速排序(arr,low,high);
}
public static void quick sort(int[]arr,int low,int high) {
//如果指针在同一个位置(只有一个数据时),退出
if(高-低1) {
返回;
}
//标记,从高指针或低指针开始(默认高指针)
布尔标志=真;
//记录指针的实际位置
int start=低电平;
int end=高;
//默认中间值是低位指针的第一个值
int mid value=arr[low];
while (true) {
//高指针移动
如果(标志){
//如果列表右侧的数据大于中间值,则向左移动
if(arr[高]中间值){
高-;
} else if (arr[high] midValue) {
//如果小于,则覆盖初始低位指针值,并移动低位指针。标志位被改变以从低位指针移动。
arr[低]=arr[高];
低;
flag=false
}
}否则{
//如果低位指针数据小于中间值,低位指针向右移动
if (arr[low] midValue) {
低;
} else if (arr[low] midValue) {
//如果低位指针的值大于中间值,则在高位指针停留时覆盖数据,并将高位指针向左移动。切换到高速指针移动
arr[高]=arr[低];
高-;
flag=true
}
}
//当两个指针的位置相同时,找到中间值的位置,退出循环。
if(低==高){
arr[low]=中间值;
打破;
}
}
//然后就是,中间值左边的那个小于中间值。右边的大于中间值。
//然后快速排序左右列表。
快速排序(arr,start,low-1);
quickSort(arr,low 1,end);
}h、排序流程
6.合并和排序
a,平分单子。
b、拆分最小最快的时候,按照原来的拆分合并最小的块。
C.合并时,开始比较左右两片的左侧尺寸。小数据到一个新的块中。
d、描述:很简单,先把数据对半拆分成最小单元,然后把两半数据合并成一个有序列表。
e、代码实现
公共静态void main(String[] args) {
int arr[]={7,5,3,2,4,1,6 };
//合并排序
int start=0;
int end=arr . length-1;
mergeSort(arr,start,end);
}
public static void merge sort(int[]arr,int start,int end) {
//确定拆分不是最小单位。
if(结束-开始0) {
//再拆分一次,知道是一个一个拆分成数据。
mergeSort(arr,start,(start end)/2);
mergeSort(arr,(start end)/2 1,end);
//记录开始/结束位置
int left=start
int right=(start end)/2 1;
//记录每个小单元的排序结果
int index=0;
int[]result=new int[end-start 1];
//如果分数检查后的两个数据仍然存在
while (left=(开始结束)/2 right=结束){
//比较两段数据的大小,然后赋值,并移动下标
if (arr[left]=arr[right]) {
结果[索引]=数组[左];
左;
}否则{
结果[索引]=数组[右];
对;
}
//移动单位记录的下标
指数;
}
//当某段数据不存在时
while (left=(开始结束)/2 right=结束){
//直接赋值给记录下标
if (left=(start end)/2) {
结果[索引]=数组[左];
左;
}否则{
结果[索引]=数组[右];
对;
}
指数;
}
//最后把新的数据赋给原来的链表,是对应块后的下标。
for(int I=start;i=结束;i ) {
arr[i]=结果[I-start];
}
}
}f、排序过程
推荐教程:java教程以上是Java。是算法吗?更多详情请关注我们的其他相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。