admin 管理员组文章数量: 1086019
2024年3月7日发(作者:javaswing计算天数)
JAVA程序算法源代码二十例
以下是二十个JAVA程序算法的源代码:
1.两数之和:
```
public int[] twoSum(int[] nums, int target)
Map
for (int i = 0; i < ; i++)
}
(nums[i], i);
}
throw new IllegalArgumentException("No two sum solution");
```
2.斐波那契数列:
```
public int fibonacci(int n)
if (n <= 1)
return n;
}
int[] fib = new int[n + 1];
fib[0] = 0;
fib[1] = 1;
for (int i = 2; i <= n; i++)
fib[i] = fib[i - 1] + fib[i - 2];
}
return fib[n];
```
3.判断素数:
```
public boolean isPrime(int n)
if (n <= 1)
return false;
}
for (int i = 2; i * i <= n; i++)
if (n % i == 0)
return false;
}
}
return true;
```
4.判断回文数:
```
public boolean isPalindrome(int x)
if (x < 0 , (x % 10 == 0 && x != 0))
return false;
}
int reversed = 0;
while (x > reversed)
reversed = reversed * 10 + x % 10;
x/=10;
}
return x == reversed , x == reversed / 10;
```
5.最大公约数:
```
public int gcd(int a, int b)
while (b != 0)
int tmp = b;
b=a%b;
a = tmp;
}
return a;
```
6.最小公倍数:
```
public int lcm(int a, int b)
return (a / gcd(a, b)) * b;
```
7.二分查找:
```
public int binarySearch(int[] nums, int target)
int left = 0, right = - 1;
while (left <= right)
int mid = left + (right - left) / 2;
if (nums[mid] == target)
return mid;
}
if (nums[mid] < target)
left = mid + 1;
} else
right = mid - 1;
}
}
return -1;
```
8.冒泡排序:
```
public void bubbleSort(int[] nums)
int n = ;
for (int i = 0; i < n - 1; i++)
for (int j = 0; j < n - i - 1; j++)
if (nums[j] > nums[j + 1])
int temp = nums[j];
nums[j] = nums[j + 1];
nums[j + 1] = temp;
}
}
}
```
9.选择排序:
```
public void selectionSort(int[] nums)
int n = ;
for (int i = 0; i < n - 1; i++)
int minIndex = i;
for (int j = i + 1; j < n; j++)
if (nums[j] < nums[minIndex])
minIndex = j;
}
}
int temp = nums[minIndex];
nums[minIndex] = nums[i];
nums[i] = temp;
}
```
10.插入排序:
```
public void insertionSort(int[] nums)
int n = ;
for (int i = 1; i < n; i++)
int key = nums[i];
int j = i - 1;
while (j >= 0 && nums[j] > key)
nums[j + 1] = nums[j];
j--;
}
nums[j + 1] = key;
}
```
11.快速排序:
```
public void quickSort(int[] nums, int left, int right)
if (left < right)
int pivotIndex = partition(nums, left, right);
quickSort(nums, left, pivotIndex - 1);
quickSort(nums, pivotIndex + 1, right);
}
private int partition(int[] nums, int left, int right)
int pivot = nums[right];
int i = left - 1;
for (int j = left; j < right; j++)if (nums[j] < pivot)
i++;
int temp = nums[i];
nums[i] = nums[j];
nums[j] = temp;
}
}
int temp = nums[i + 1];
nums[i + 1] = nums[right];
nums[right] = temp;
return i + 1;
```
12.归并排序:
```
public void mergeSort(int[] nums, int left, int right)
if (left < right)
int mid = left + (right - left) / 2;
mergeSort(nums, left, mid);
mergeSort(nums, mid + 1, right);
merge(nums, left, mid, right);
}
private void merge(int[] nums, int left, int mid, int right)int[] temp = new int[right - left + 1];
int i = left, j = mid + 1, k = 0;
while (i <= mid && j <= right)
if (nums[i] <= nums[j])
temp[k++] = nums[i++];
} else
temp[k++] = nums[j++];
}
}
while (i <= mid)
temp[k++] = nums[i++];
}
while (j <= right)
temp[k++] = nums[j++];
}
for (int m = 0; m < ; m++)
nums[left + m] = temp[m];
}
```
13.求阶乘:
```
public int factorial(int n)
if (n == 0)
return 1;
}
return n * factorial(n - 1);
```
14.斐波那契数列递归版本:
```
public int fibonacciRecursive(int n)
if (n <= 1)
return n;
}
return fibonacciRecursive(n - 1) + fibonacciRecursive(n - 2);
```
15.求和递归版本:
```
public int sumRecursive(int[] nums, int n)
if (n <= 0)
return 0;
}
return sumRecursive(nums, n - 1) + nums[n - 1];
```
版权声明:本文标题:JAVA程序算法源代码二十例 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/p/1709756945a545355.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论