本文目錄一覽:
- 1、JAVA數據結構有哪幾種?
- 2、用JAVA實現線性表排序
- 3、Java設計線性表排序演算法
- 4、今天老師講java的數據結構,講到數組長度和線性表的長度,請問線性表長度和數組長度的關係是什麼?
- 5、請用java寫假設有兩個集合A和B分別用兩個線性表LA和LB表示,即線性表中的數據元素為集合中的成
JAVA數據結構有哪幾種?
數組、棧 、隊列、鏈表、樹、堆 、圖、散列表 。
1:數組是計算機編程語言上,對於「Array」的中文稱呼,是用於儲存多個相同類型數據的集合。
2:棧是限定僅在表尾進行插入和刪除操作的線性表,棧者,存儲貨物或供旅客住宿的地方,可引申為倉庫、中轉站,引入到計算機領域裡,就是指數據暫時存儲的地方,所以才有進棧、出棧的說法。
3:一種特殊的線性表,它只允許在表的前端進行刪除操作,而在表的後端進行插入操作。
4:鏈表,一種物理存儲單元上非連續、非順序的存儲結構,數據元素的邏輯順序是通過鏈表中的指針鏈接次序實現的。
5:哈希表,是根據關鍵碼值而直接進行訪問的數據結構。也就是說,它通過把關鍵碼值映射到表中一個位置來訪問記錄,以加快查找的速度。
用JAVA實現線性表排序
package Test;
import java.util.Random;
import java.io.*;
import java.util.Date;
import java.text.SimpleDateFormat;
import java.util.Calendar;
public class Baidu {
/**
* 生成隨機數組
* @param n int
* @return int[]
*/
public int[] creatarray(int n) {
Random random = new Random();
int array[] = new int[n];
for (int i = 0; i array.length; i++) {
array[i] = random.nextInt();
}
return array;
}
/**
* 排序函數
* @param data int[]
* @param n 參數長度
* @param cNo 比較的值 是0
*/
public int[] merge(int[] data, int n, int cNo) {
int length1 = 0;
int length2 = 0;
int length0 = 0;
int array1[] = new int[n]; //正數
int array2[] = new int[n]; //負數
int array0[] = new int[n]; //零
int redata[] = new int[n]; //返回數組
for (int i = 0; i n; i++) {
if (data[i] 0) {
array1[length1] = data[i];
length1++;
} else if (data[i] == 0) {
array0[length0] = data[i];
length0++;
} else {
array2[length2] = data[i];
length2++;
}
}
for (int i = 0; i length1; i++) {
redata[i] = array1[i];
}
for (int i = 0; i length0; i++) {
redata[length1 + i] = array0[i];
}
for (int i = 0; i length2; i++) {
redata[length1 + length0 + i] = array2[i];
}
return redata;
}
/**
* 輸出函數
* @param time int[]
* @param before int[]
* @param end int[]
* @param n int
*/
public void out(long[] time, int[] before, int[] end, int n) {
for (int v = 0; v n; v++) {
System.out.println(“第” + v + “組耗時:” + time[v] + ” 原來是:” + before[v] +
” 排序後為:” + end[v]);
}
}
public static void main(String args[]) {
Baidu tt = new Baidu();
int[] array = new int[20];
int[] arrayEnd = new int[20];
array = tt.creatarray(20);
int forNum = 3; //循環次數
long[] timeall = new long[forNum];
for (int i = 0; i forNum; i++) {
Calendar cCalendar = Calendar.getInstance();
long currTimebegin = cCalendar.getTimeInMillis();
arrayEnd = tt.merge(array, 20, 0);
cCalendar = Calendar.getInstance();
long currTimeend = cCalendar.getTimeInMillis();
long time = currTimeend – currTimebegin;
timeall[i] = time;
}
tt.out(timeall, array, arrayEnd, forNum);
}
}
大體思路吧 稍微在此基礎上修改一下即可
Java設計線性表排序演算法
import java.util.Scanner;
import java.util.Arrays;
public class P
{
public static void main(String[] args)
{
Scanner sc=new Scanner(System.in);
float[] A=new float[1],B=new float[1];
int alen=0,blen=0,i,j,k;
String line;
System.out.println(“請輸入線性表A的各元素,每行一個(輸入#結束):”);
while(true)
{
line=sc.nextLine();
if(line.equals(“#”))
break;
A=Arrays.copyOf(A,++alen);
A[alen-1]=Float.parseFloat(line);
}
System.out.println(“請輸入線性表B的各元素,每行一個(輸入#結束):”);
while(true)
{
line=sc.nextLine();
if(line.equals(“#”))
break;
B=Arrays.copyOf(B,++blen);
B[blen-1]=Float.parseFloat(line);
}
Arrays.sort(A);
Arrays.sort(B);
System.out.println(“升序排序後,線性表A的各元素是:”);
for(i=0;ialen;i++)
{
System.out.print(A[i]+” “);
}
System.out.println();
System.out.println();
System.out.println(“升序排序後,線性表B的各元素是:”);
for(i=0;iblen;i++)
{
System.out.print(B[i]+” “);
}
System.out.println();
System.out.println();
A=Arrays.copyOf(A,alen+blen);
for(i=0;iblen;i++)
{
if(B[i]=A[alen-1])
A[alen++]=B[i];
else
{
for(j=0;jalen-1;j++)
{
if(B[i]=A[j])
break;
}
for(k=alen-1;k=j;k–)
{
A[k+1]=A[k];
}
A[j]=B[i];
alen++;
}
}
System.out.println(“線性表B按順序插入線性表A中後,線性表A的各元素是:”);
for(i=0;ialen;i++)
{
System.out.print(A[i]+” “);
}
sc.close();
}
}
今天老師講java的數據結構,講到數組長度和線性表的長度,請問線性表長度和數組長度的關係是什麼?
數組的長度表示存放線性表的存儲空間的長度,一般是分配之後固定的!(當然可以通過一些高級語言的編程手段變成動態的)
線性表的長度可以理解為數組中存放的數據的長度!是線性表中存放數據元素的個數,這個值是可以變化的 隨著線性表的增,刪操作 量會變化
但是線性表的長度不能超過數組的長度!也就是小於等於!
請用java寫假設有兩個集合A和B分別用兩個線性表LA和LB表示,即線性表中的數據元素為集合中的成
/*假設利用兩個線性表La和Lb分別表示兩個集合A和B(即線性表中的數據元素即為集合中的成員),現要求一個新的
集合A=AUB。這就要求對線性表作如下操作:擴大線性表La,將存在於線性表Lb中而不存在於線性表La中的數據元素插入
到線性表La中去,只要從線性表Lb中依次取得每個數據元素,並依值在線性表La中進行查訪,若不存在,則插入之。*/
#includeiostream.h
#includestdio.h
#includestdlib.h
#includemalloc.h
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
#define OVERFLOW -2
#define LIST_INIT_SIZE 100//線性表存儲空間的初始分量
#define LISTINCREAMENT 10//線性表存儲空間的分配增量
typedef int Status;
typedef int ElemType;
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/155382.html