数组 冒泡排序 选择排序 插入排序
来源:互联网 发布:芯片编程器 编辑:程序博客网 时间:2024/05/17 06:36
package arr;
/**
* 我自己的数组类
* @author guosheng
*
*/
public class ArraySelf {
public long[] guosheng;
public int elements;
public ArraySelf(){
guosheng = new long[100001];
}
public ArraySelf(int chang){
guosheng = new long[chang];
}
/**
* 添加方法
* 郭胜
*/
public void insert(long value){
guosheng[elements] = value;
elements++;
}
/**
* 降序插入
*/
public void insertBySortAsc(long value){
int i;
for (i = 0; i < elements; i++) {
if(guosheng[i]>value){
break;
}
}
for(int j = elements;j>=i;j--){
guosheng[j+1] = guosheng[j];
}
guosheng[i] = value;
elements ++;
}
/**
* 修改方法
* 根据下标修改
*/
public void change(int index,long value){
if(index > elements || index < 0){
throw new IndexOutOfBoundsException();
}else{
guosheng[index] = value;
}
}
/**
* 根据下标查询方法
*/
public long searchByIndex(int index){
if(index > elements || index < 0){
throw new IndexOutOfBoundsException();
}else{
return guosheng[index];
}
}
/**
* 根据值线性查询方法
*/
public int searchByValue(long value){
long startTime = System.currentTimeMillis();
int i;
for(i=0;i<elements;i++){
if(guosheng[i] == value){
break;
}
}
if(i>= elements){
return -1;
}
long endTime = System.currentTimeMillis();
System.out.println(endTime-startTime+"直线执行查询方法");
return i;
}
/**
* 根据值二分法查询
*/
public int searchByValueForTwo(long value){
long startTime = System.currentTimeMillis();
int min = 0;
int max = elements;
int middle = (max+min)/2;
for(int i=0;i<elements/2;i++){
if(guosheng[middle] == value){
break;
}else if(i>=(elements/2-1)){
middle = -1;
break;
}else if(guosheng[middle]>value){//向左
max = middle;
middle = (max+min)/2;
}else if(guosheng[middle]<value){//向右
min = middle;
middle = (max + min)/2;
}
}
long endTime = System.currentTimeMillis();
System.out.println(endTime - startTime+"二分法执行时间");
return middle;
}
/**
* 展示我的数组
*/
public void displayMyArray(){
StringBuilder sb = new StringBuilder("[");
for (int i = 0; i < elements; i++) {
sb.append(guosheng[i] + ",");
}
String str = sb.toString();
str = str.substring(0, str.length()-1)+"]";
System.out.println(str);
}
/**
* 冒泡排序
* 郭胜
* @param arr
* @return
*/
public long[] bubblingSort(long[] arr){
long temp = 0;
for(int i=0;i<arr.length-1;i++){
for(int j=arr.length-1;j>i;j--){
if(arr[j]<arr[j-1]){
temp = arr[j-1];
arr[j-1] = arr[j];
arr[j] = temp;
}
}
}
return arr;
}
/**
* 选择排序
* 郭胜
* @param arr
* @return
*/
public long[] selectionSort(long[] arr){
int k = 0;
long temp = 0;
for(int i=0;i<arr.length-1;i++){
k=i;
for(int j=0;j<arr.length-1;j++){
if(arr[k]<arr[j]){
temp = arr[k];
arr[k] = arr[j];
arr[j] = temp;
}
}
}
return arr;
}
/**
* 插入排序
* 郭胜
* @param arr
* @return
*/
public long[] insertionSort(long[] arr){
for(int i=1;i<arr.length-1;i++){
if(arr[i]< arr[i-1]){
long temp = arr[i];
int j = i;
while(j>0 && arr[j-1]>temp){
arr[j] = arr[j-1];
j--;
}
arr[j] = temp;
}
}
return arr;
}
}
/**
* 我自己的数组类
* @author guosheng
*
*/
public class ArraySelf {
public long[] guosheng;
public int elements;
public ArraySelf(){
guosheng = new long[100001];
}
public ArraySelf(int chang){
guosheng = new long[chang];
}
/**
* 添加方法
* 郭胜
*/
public void insert(long value){
guosheng[elements] = value;
elements++;
}
/**
* 降序插入
*/
public void insertBySortAsc(long value){
int i;
for (i = 0; i < elements; i++) {
if(guosheng[i]>value){
break;
}
}
for(int j = elements;j>=i;j--){
guosheng[j+1] = guosheng[j];
}
guosheng[i] = value;
elements ++;
}
/**
* 修改方法
* 根据下标修改
*/
public void change(int index,long value){
if(index > elements || index < 0){
throw new IndexOutOfBoundsException();
}else{
guosheng[index] = value;
}
}
/**
* 根据下标查询方法
*/
public long searchByIndex(int index){
if(index > elements || index < 0){
throw new IndexOutOfBoundsException();
}else{
return guosheng[index];
}
}
/**
* 根据值线性查询方法
*/
public int searchByValue(long value){
long startTime = System.currentTimeMillis();
int i;
for(i=0;i<elements;i++){
if(guosheng[i] == value){
break;
}
}
if(i>= elements){
return -1;
}
long endTime = System.currentTimeMillis();
System.out.println(endTime-startTime+"直线执行查询方法");
return i;
}
/**
* 根据值二分法查询
*/
public int searchByValueForTwo(long value){
long startTime = System.currentTimeMillis();
int min = 0;
int max = elements;
int middle = (max+min)/2;
for(int i=0;i<elements/2;i++){
if(guosheng[middle] == value){
break;
}else if(i>=(elements/2-1)){
middle = -1;
break;
}else if(guosheng[middle]>value){//向左
max = middle;
middle = (max+min)/2;
}else if(guosheng[middle]<value){//向右
min = middle;
middle = (max + min)/2;
}
}
long endTime = System.currentTimeMillis();
System.out.println(endTime - startTime+"二分法执行时间");
return middle;
}
/**
* 展示我的数组
*/
public void displayMyArray(){
StringBuilder sb = new StringBuilder("[");
for (int i = 0; i < elements; i++) {
sb.append(guosheng[i] + ",");
}
String str = sb.toString();
str = str.substring(0, str.length()-1)+"]";
System.out.println(str);
}
/**
* 冒泡排序
* 郭胜
* @param arr
* @return
*/
public long[] bubblingSort(long[] arr){
long temp = 0;
for(int i=0;i<arr.length-1;i++){
for(int j=arr.length-1;j>i;j--){
if(arr[j]<arr[j-1]){
temp = arr[j-1];
arr[j-1] = arr[j];
arr[j] = temp;
}
}
}
return arr;
}
/**
* 选择排序
* 郭胜
* @param arr
* @return
*/
public long[] selectionSort(long[] arr){
int k = 0;
long temp = 0;
for(int i=0;i<arr.length-1;i++){
k=i;
for(int j=0;j<arr.length-1;j++){
if(arr[k]<arr[j]){
temp = arr[k];
arr[k] = arr[j];
arr[j] = temp;
}
}
}
return arr;
}
/**
* 插入排序
* 郭胜
* @param arr
* @return
*/
public long[] insertionSort(long[] arr){
for(int i=1;i<arr.length-1;i++){
if(arr[i]< arr[i-1]){
long temp = arr[i];
int j = i;
while(j>0 && arr[j-1]>temp){
arr[j] = arr[j-1];
j--;
}
arr[j] = temp;
}
}
return arr;
}
}
阅读全文
0 0
- 数组(冒泡排序,选择排序,插入排序)
- 数组 冒泡排序 选择排序 插入排序
- 数组排序:快速排序,选择排序,冒泡排序,插入排序
- 排序数组 选择 冒泡 插入
- 数组的排序(选择/冒泡/插入排序)
- [Java]数组排序-选择排序 冒泡排序 插入排序
- java数组的排序,选择排序,冒泡排序,插入排序
- 冒泡选择插入排序
- 冒泡、选择、插入排序
- 选择、插入、冒泡排序
- 冒泡、插入、选择排序
- 选择、插入、冒泡排序
- 冒泡、选择、插入排序
- 选择、冒泡、插入-排序
- 插入 选择 冒泡 排序
- 选择、冒泡、插入排序
- 冒泡、选择、插入排序
- 冒泡,插入,选择排序
- React属性与事件
- 基础技能树 系列文章导航(上)
- c语言的特点
- Illegal Instruction errors on Squid 3.4 Synopsis Squid 3.4 and later, running on certain paravirtual
- 如何通过程序(java)提高CSDN的博客访问量
- 数组 冒泡排序 选择排序 插入排序
- c# 委托(一)
- Linux多线程编程讲解之系列一
- SSH链接缓慢原因(待验证)
- golang使用odbc链接hive
- 我的背包 ,啊啊
- DOM 与 HTML DOM(笔记)
- 内网映射之ngrok工具
- 10基于opencv的霍夫变换(霍夫线变换_霍夫圆变换)