Java 数组元素的排序,输出排序后的序号,从小到大排序,并且要求相同的数据其序号是相同的。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java 数组元素的排序,输出排序后的序号,从小到大排序,并且要求相同的数据其序号是相同的。相关的知识,希望对你有一定的参考价值。
怎样求该数排序后的序号
参考技术A public class BubbleSort/**
* 冒泡排序
* @param args
*/
public static void main(String[] args)
int[] num=51,15,12,84,21,24,0,114,54,123,1,25,4,6;
int tmp=0;
for(int n=0;n<num.length;n++)
System.out.println(num[n]+"排序前的序号为:"+(n+1));
for(int i=0;i<num.length;i++)
for(int j=i+1;j<num.length;j++)
if(num[i]>num[j])
tmp=num[i];
num[i]=num[j];
num[j]=tmp;
System.out.println();
for(int k=0;k<num.length;k++)
System.out.println(num[k]+"排序后的序号为:"+(k+1));
追问
本来的数在排序后的序号啊。。
-3 75 12 -3
样例输出
1 3 2 1
//原理:每次都找到当次最大的数,按大小顺序依次放入数组相应位置
//比如:第一次先找到最大的数并记下其位置,如果其不在数组第一位,
//则将其与第一位交换,使最大数置于第一位
//第二次再循环查找第二大的数并记下其位置,如果其不在数组第二位,
//则将其与第二位交换,使最大数置于第二位
//依次类推.........................................
//第i次再循环查找第i大的数并记下其位置,如果其不在数组第 i位,
//则将其与第 i位交换,使最大数置于第 i位
public class SelectSort
public static void main(String[] args)
int[] a = 25,15,42,16,12,36;
int max = 0;
int tmp = 0;
for(int i=0;i<a.length;i++)
max = i;//
/**查找第 i大的数,直到记下第 i大数的位置***/
for(int j=i+1;j<a.length;j++)
if(a[max]<a[j])
max = j;//记下较大数位置,再次比较,直到最大
/***如果第 i大数的位置不在 i,则交换****/
if(i!=max)
tmp = a[i];
a[i] = a[max];
a[max] = tmp;
for(int i=0;i<a.length;i++)
System.out.print(a[i]+" ");
编写函数sort()
其功能是将形参一维数组按照从小到大排序。编写程序。定义一维数组,输入一维数组元素值。调用sort()函数排序 。并输出排序后的一维数组
能帮我做出来的 一定还加分哦!不过一定要正确清晰!
'。编写程序。定义一维数组,输入一维数组元素值。
'调用sort()函数排序 。并输出排序后的一维数组
Dim a(100) As Integer
Private Sub sort(ByVal s As Integer, ByVal t As Integer)
If s >= t Then Exit Sub
i = s
j = t
r = Int((i + j) / 2)
Key = a(r)
While i < j
While a(i) < Key '不取等号 即遇到相同大小的数字也不跳过 对其处理(如取等号 则跳过,不对其处理)
i = i + 1
Wend
While a(j) > Key
j = j - 1
Wend
If i <= j Then '取等号 即i、j两指针重合时也对其处理 防止程序死循环
temp = a(i)
a(i) = a(j)
a(j) = temp
i = i + 1
j = j - 1
End If
Wend
Call sort(s, j)
Call sort(i, t)
End Sub
Private Sub Command1_Click()
For i = 1 To 100
Randomize
a(i) = Int(Rnd * 100 + 1)
Next
Call sort(1, 100)
For i = 1 To 100
Print a(i);
If i Mod 10 = 0 Then Print
Next
End Sub 参考技术A 三种排序哈
Public Sub Swap(ByRef a, ByRef b)
'交换
Dim t
t = a: a = b: b = t
End Sub
Public Sub BubbleSort(ByRef a, Optional ByVal Left, Optional ByVal Right)
'起泡排序
'基本思想是:比较相邻的两个记录,逆序则交换。
'这样的做法导致小的关键码一层层的浮上来,因此得名。
Dim i As Integer, j As Integer
If IsMissing(Left) Then Left = LBound(a)
If IsMissing(Right) Then Right = UBound(a)
For i = Left To Right - 1
For j = Right To i + 1 Step -1
If a(j - 1) > a(j) Then Swap a(j - 1), a(j)
Next j
Next i
End Sub
Public Sub SelectSort(ByRef a, Optional ByVal Left, Optional ByVal Right)
'选择排序
'基本思想是:每次选出第i小的记录,放在第i个位置。
'i的起点是Left。当i=Right-1时就排完了。
Dim i As Integer, j As Integer
Dim k As Integer
If IsMissing(Left) Then Left = LBound(a)
If IsMissing(Right) Then Right = UBound(a)
For i = Left To Right - 1
k = i
For j = i + 1 To Right
If a(k) > a(j) Then k = j
Next j
If k <> i Then Swap a(k), a(i)
Next i
End Sub
Public Sub QuickSort(ByRef a, Optional ByVal Left, Optional ByVal Right)
If IsMissing(Left) Then Left = LBound(a)
If IsMissing(Right) Then Right = UBound(a)
QuickSort2 a, Left, Right
End Sub
Private Sub QuickSort2(ByRef a, ByVal Left As Integer, ByVal Right As Integer)
'快速排序
'基本思想是:任取待排序列的某个记录作为基准,
'按照该关键码大小,将整个序列分成两个序列——
'左侧的所有记录的关键码都比基准小(或者等),
'右侧的都比基准大,基准则放在两个子序列之间,
'显然这时基准放在了最后应该放置的位置。
'分别对左右子序列重复上面的过程,直到最后所有的记录都放在相应的位置。
Dim i As Integer, j As Integer
Dim x
i = Left
j = Right
x = a((Left + Right) / 2)
Do While (i <= j)
Do While (a(i) < x And i < Right)
i = i + 1
Loop
Do While (x < a(j) And j > Left)
j = j - 1
Loop
If (i <= j) Then
Swap a(i), a(j)
i = i + 1
j = j - 1
End If
Loop
If (Left < j) Then QuickSort2 a, Left, j
If (i < Right) Then QuickSort2 a, i, Right
End Sub 参考技术B Private Function 排序(原数组() As Single, 新数组() As Single) As Boolean
For i = LBound(原数组) To UBound(原数组)
新数组(i) = 原数组(i)
Next i
For i = LBound(新数组) To UBound(新数组) - 1
For j = i + 1 To UBound(新数组)
If 新数组(j) < 新数组(i) Then
t = 新数组(i)
新数组(i) = 新数组(j)
新数组(j) = t
End If
Next j
Next i
End Function
Private Sub Command1_Click() '调试举例
Dim a(10) As Single, b(10) As Single
For i = 0 To 10
a(i) = Rnd * 100
Print a(i),
Next i
排序 a, b
For i = 0 To 10
Print b(i),
Next i
End Sub
以上是关于Java 数组元素的排序,输出排序后的序号,从小到大排序,并且要求相同的数据其序号是相同的。的主要内容,如果未能解决你的问题,请参考以下文章
C语言一堆数组中存放了10个小于100的整数,请编程对所有数据按照从小到大的顺序进行排序,若个位数相等,则按照十位从小到大的顺序排序,输出排序后的结果