一、冒泡排序算法
冒泡排序在前面已经写过几次了
http://t.csdn.cn/EyJKhhttp://t.csdn.cn/EyJKh
二、选择排序算法
选择排序
package com.qf.stu.search;
import java.util.Arrays;
//选择排序法
public class Test5 {
public static void main(String[] args) {
int[] arrays=new int[]{-40,35,70,10,33,-89,60};
for (int i=1;i<arrays.length;i++){
int minindex=i-1;
for (int j=i;j<arrays.length;j++){
if (arrays[minindex]>arrays[j]){
minindex=j;
}
}
arrays[minindex]=arrays[minindex]+arrays[i-1];
arrays[i-1]=arrays[minindex]-arrays[i-1];
arrays[minindex]=arrays[minindex]-arrays[i-1];
}
System.out.println(Arrays.toString(arrays));
}
}
三、直接插入算法
就想整理扑克牌一样
package com.qf.stu.search;
import java.util.Arrays;
//插入排序
public class Test6 {
public static void main(String[] args) {
int[] nums={-40,35,70,10,33,-89,60};
search(nums);
}
public static void search(int[]nums){
for (int i=1;i<nums.length;i++){
int index=i;
for (int j=i-1;j>=0;j--){
if (nums[index]<nums[j]){
nums[index]=nums[index]+nums[j];
nums[j]=nums[index]-nums[j];
nums[index]=nums[index]-nums[j];
index--;
}
}
}
System.out.println(Arrays.toString(nums));
}
}
四、二分查找算法
//二分查找算法
package com.qf.stu.search;
import java.util.Arrays;
public class Test4 {
public static void main(String[] args) {
int[] nums = new int[]{10, 30, 50, 70, 90, 100, 110};
System.out.println(Arrays.binarySearch(nums, 0, 6, 30));
System.out.println(search(nums, 30, 0, 6));
}
public static int search(int[] nums,int num,int starindex,int endindex){
starindex=0;
endindex=nums.length-1;
while (starindex<=endindex){
int index=(starindex+endindex)/2;
if (num>nums[index]){
starindex=index+1;
}else if (num<nums[index]){
endindex=index-1;
}else {
return index;
}
}
return -1;
}
}
Arrays类中的binarySearch方法也是通二分查找法编写的
private static int binarySearch0(int[] a, int fromIndex, int toIndex,
int key) {
int low = fromIndex;
int high = toIndex - 1;
while (low <= high) {
int mid = (low + high) >>> 1;
int midVal = a[mid];
if (midVal < key)
low = mid + 1;
else if (midVal > key)
high = mid - 1;
else
return mid; // key found
}
return -(low + 1); // key not found.
}
五、数组中不重复随机数生成算法
1.生成随机数,判断是否和之前的随机数相等,再放入数组中
package com.qf.stu.search;
import java.util.Arrays;
import java.util.Random;
public class Test3 {
public static void main(String[] args) {
search();
}
public static void search(){
int[]nums=new int[100];
for (int i=0;i<nums.length;i++){
nums[i]=i+1;
}
int[] result=new int[10];
boolean flag;
Random r=new Random();
for (int i=0;i<result.length;i++){
flag=true;
while (flag) {
boolean b=true;
int index = r.nextInt(nums.length);
for (int j=0;j<result.length;j++){
if (nums[index]==result[j]){
b=false;
break;
}
}
if (b){
result[i]=nums[index];
flag=false;
}
}
}
System.out.println(Arrays.toString(result));
}
}
2.将已经生成的随机数放到数组最后面,将他排除在外
package com.qf.stu.search;
import java.util.Arrays;
import java.util.Random;
public class Test1 {
public static void main(String[] args) {
int[]nums=new int[10];
for (int i=0;i<nums.length;i++){
nums[i]=i+1;
}
int[]result=new int[10];
search(nums,result);
}
public static void search(int[]nums,int[]result){
//在nums数组中生成一个随机数,将值赋给result数组,将随机数和数组后面的数互换
int temp=0;
Random r=new Random();
for (int i=0;i<result.length;i++){
int index = r.nextInt(nums.length -i);
result[i]=nums[index];
temp=nums[index];
nums[index]=nums[nums.length-1-i];
nums[nums.length-i-1]=temp;
}
System.out.println(Arrays.toString(result));
}
}