本文目錄一覽:
- 1、java 數組升序排列
- 2、在java編程中如何對數組進行排序,並輸出排序後的數組及原數組下標值
- 3、java怎麼讓數組的數字從大到小排序?
- 4、JAVA中對數組排序除了冒泡和直接遍歷外還有沒更好的方法?
- 5、java怎麼排序數組的數據?
- 6、JAVA靜態方法對數組排序
java 數組升序排列
public static void main(String args[])
{
try
{
int i, sum=0;
FileWriter f_out=new FileWriter(“data.txt”);
System.out.println(“請輸入學生的個數”);
int n=new Scanner(System.in).nextInt();
int s[]=new int [n];
for( i=0;in;i++)
{
System.out.println(“請輸入第”+(i+1)+”個學生的成績”);
s[i]=new Scanner(System.in).nextInt();
if (s[i]0||s[i]100)
{
System.out.println(“輸入錯誤,請重新輸入”);
s[i]=new Scanner(System.in).nextInt();
}
}
Arrays.sort(s);
for(int j=0;jn;j++){
f_out.write(s[j]+”\n”);
}
f_out.close();
FileReader f_in=new FileReader(“data.txt”);
for(int c=f_in.read();c!=-1;c=f_in.read())
System.out.print((char)c+” “);
f_in.close();
}
catch(IOException e)
{
System.err.println(e);
e.printStackTrace();
}
}
這樣應該就好了。
在java編程中如何對數組進行排序,並輸出排序後的數組及原數組下標值
java變成對數組進行排序可以使用ArraySort方法,保存源數組下標值可以存入map中,如下代碼:
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
public class ceshi {
public static void main(String[] args) {
int n = 5;
int[] a = { 8, 5, 4, 6, 2, 1, 7, 9, 3 };
HashMap map = new HashMap();
for (int i = 0; i a.length; i++) {
map.put(a[i], i); // 將值和下標存入Map
}
// 排列
List list = new ArrayList();
Arrays.sort(a); // 升序排列
for (int i = 0; i a.length; i++) {
list.add(a[i]);
}
for (Object object : list) {
System.out.print(object + “,”);
}
System.out.println();
// 查找原始下標
for (int i = 0; i n; i++) {
System.out.print(map.get(a[i]) + “,”);
}
}
}
運行結果如下:
java怎麼讓數組的數字從大到小排序?
將數字從大到小排序的方法:
例如簡一點的冒泡排序,將第一個數字和後面的數字逐個比較大小,如果小於,則互換位置,大於則不動。此時,第一個數為數組中的最大數。然後再將第二個數與後面的數逐個比較,以次類推。
示例代碼如下:
public class Test {
public static void main(String[] args) {
int [] array = {12,3,1254,235,435,236,25,34,23};
int temp;
for (int i = 0; i array.length; i++) {
for (int j = i+1; j array.length; j++) {
if (array[i] array[j]) {
temp = array[i];
array[i] = array[j];
array[j] = temp; // 兩個數交換位置
}
}
}
for (int i = 0; i array.length; i++) {
System.out.print(array[i]+” “);
}
}
}
數組對於每一門編程語言來說都是重要的數據結構之一,當然不同語言對數組的實現及處理也不盡相同。
Java 語言中提供的數組是用來存儲固定大小的同類型元素。
你可以聲明一個數組變數,如 numbers[100] 來代替直接聲明 100 個獨立變數 number0,number1,….,number99
擴展資料
Java中利用數組進行數字排序一般有4種方法:
1、選擇排序是先將數組中的第一個數作為最大或最小數,然後通過循環比較交換最大數或最小數與一輪比較中第一個數位置進行排序。
2、冒泡排序也是先將數組中的第一個數作為最大或最小數,循環比較相鄰兩個數的大小,滿足條件就互換位置,將最大數或最小數沉底。
3、快速排序法主要是運用Arrays類中的Arrays.sort方法()實現。
4、插入排序是選擇一個數組中的數據,通過不斷的插入比較最後進行排序。
JAVA中對數組排序除了冒泡和直接遍歷外還有沒更好的方法?
初級的排序方法有泡泡,插入和選擇.高級的排序方法還有堆排序,希爾排序法,快速排序法. 快速排序法(quick sort)是目前所公認最快的排序方法之一(視解題的對象而定),雖然快速排序法在最差狀況下可以達O(n2),但是在多數的情況下,快速排序法的效率表現是相當不錯的。 快速排序法的基本精神是在數列中找出適當的軸心,然後將數列一分為二,分別對左邊與右邊數列進行排序,而影響快速排序法效率的正是軸心的選擇。 1. 將最左邊的數設定為軸,並記錄其值為 s 循環處理: 1. 令索引 i 從數列左方往右方找,直到找到大於 s 的數 2. 令索引 j 從數列左右方往左方找,直到找到小於 s 的數 3. 如果 i = j,則離開循環 4. 如果 i j,則交換索引i與j兩處的值 5. 將左側的軸與 j 進行交換 6. 對軸左邊進行遞歸 7. 對軸右邊進行遞歸 透過以下演算法,則軸左邊的值都會小於s,軸右邊的值都會大於s,如此再對軸左右兩邊進行遞歸,就可以對完成排序的目的,例如下面的實例,*表示要交換的數,[]表示軸: [41] 24 76* 11 45 64 21 69 19 36* [41] 24 36 11 45* 64 21 69 19* 76 [41] 24 36 11 19 64* 21* 69 45 76 [41] 24 36 11 19 21 64 69 45 76 21 24 36 11 19 [41] 64 69 45 76 在上面的例子中,41左邊的值都比它小,而右邊的值都比它大,如此左右再進行遞歸至排序完成。 public class QuickSort { public static void sort(int[] number) { sort(number, 0, number.length-1); } private static void sort(int[] number, int left, int right) { if(left right) { int s = number[left]; int i = left; int j = right + 1; while(true) { // 向右找 while(i + 1 number.length number[++i] s) ; // 向左找 while(j -1 -1 number[–j] s) ; if(i = j) break; swap(number, i, j); } number[left] = number[j]; number[j] = s; sort(number, left, j-1); // 對左邊進行遞迴 sort(number, j+1, right); // 對右邊進行遞迴 } } private static void swap(int[] number, int i, int j) { int t; t = number[i]; number[i] = number[j]; number[j] = t; }}
java怎麼排序數組的數據?
java默認為升序排序
如下為api:
public static void sort(int[] a)
對指定的 int 型數組按數字升序進行排序。該排序演算法是一個經過調優的快速排序法,改編自 Jon L. Bentley 和 M. Douglas
McIlroy 合著的 Engineering a Sort Function”, Software-Practice and Experience Vol.
23(11) P. 1249-1265 (November 1993)。此演算法在許多數據集上提供 n*log(n) 性能,這導致其他快速排序會降低二次型性能。
參數:
a – 要排序的數組
JAVA靜態方法對數組排序
用了冒泡排序方法
public class MySort {
public static void sort(int [] a){
for(int i=0;ia.length;i++){
for(int j = i+1;ja.length;j++){
if(a[i]a[j]){
int temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
}
}
public static void sort(double [] d){
for(int i=0;id.length;i++){
for(int j = i;jd.length;j++){
if(d[i]d[j]){
double temp = d[i];
d[i] = d[j];
d[j] = temp;
}
}
}
}
public static void main(String[] args) {
int a [] = {3,2,5,1,6,7,4};
double d [] = {3.0,2.0,5.0,1.0,6.0,7.0,4.0};
sort(a);
for(int i:a)
System.out.print(i+”,”);
System.out.println(“”);
sort(d);
for(double i:d)
System.out.print(i+”,”);
}
}
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/156897.html