冒泡排序是比較經(jīng)典的排序算法。代碼如下:
我們提供的服務有:成都網(wǎng)站設計、成都網(wǎng)站制作、外貿網(wǎng)站建設、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認證、鄧州ssl等。為上千企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務,是有科學管理、有技術的鄧州網(wǎng)站制作公司
for(int i=1;iarr.length;i++){
for(int j=1;jarr.length-i;j++){
//交換位置
} ? ?
拓展資料:
原理:比較兩個相鄰的元素,將值大的元素交換至右端。
思路:依次比較相鄰的兩個數(shù),將小數(shù)放在前面,大數(shù)放在后面。即在第一趟:首先比較第1個和第2個數(shù),將小數(shù)放前,大數(shù)放后。然后比較第2個數(shù)和第3個數(shù),將小數(shù)放前,大數(shù)放后,如此繼續(xù),直至比較最后兩個數(shù),將小數(shù)放前,大數(shù)放后。重復第一趟步驟,直至全部排序完成。
第一趟比較完成后,最后一個數(shù)一定是數(shù)組中最大的一個數(shù),所以第二趟比較的時候最后一個數(shù)不參與比較;
第二趟比較完成后,倒數(shù)第二個數(shù)也一定是數(shù)組中第二大的數(shù),所以第三趟比較的時候最后兩個數(shù)不參與比較;
依次類推,每一趟比較次數(shù)-1;
……
舉例說明:要排序數(shù)組:int[]?arr={6,3,8,2,9,1};?
for(int i=1;iarr.length;i++){
for(int j=1;jarr.length-i;j++){
//交換位置
} ? ?
參考資料:冒泡排序原理
java實現(xiàn)的簡單猜數(shù)字游戲代碼,通過隨機數(shù)與邏輯判斷來實現(xiàn)游戲功能
代碼如下:
import java.util.InputMismatchException;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// 產(chǎn)生一個隨機數(shù)
int number = (int) (Math.random() * 100) + 1;
// 加入count
int count = 0;
// 在這里加入最大值,和最小值
int max = 100;
int min = 1;
while (true) {
// 鍵盤錄入數(shù)據(jù)
Scanner sc = new Scanner(System.in);
System.out.println("請輸入你要猜的數(shù)據(jù):(" + min + "~" + max + ")");
try {
count++;
int guessNumber = sc.nextInt();
// 判斷
if (guessNumber number) {
max = guessNumber;
System.out.println("你猜大了");
} else if (guessNumber number) {
min = guessNumber;
System.out.println("你猜小了");
} else {
System.out.println("恭喜你,花了" + count + "次就猜中了");
// 問是否繼續(xù)
System.out.println("請問還要繼續(xù)嗎?(yes)");
sc = new Scanner(System.in);
String str = sc.nextLine();
if ("yes".equals(str)) {
// 重寫賦值隨機數(shù)
number = (int) (Math.random() * 100) + 1;
count = 0;
max = 100;
min = 1;
} else {
break;
}
}
} catch (InputMismatchException e) {
System.out.println("你輸入的數(shù)據(jù)有誤");
}
}
}
}
2019年排行:Java,C,python,C++,C#,PHP。
1、Java
Java是一門面向對象編程語言,不僅吸收了C++語言的各種優(yōu)點,還摒棄了C++里難以理解的多繼承、指針等概念,因此Java語言具有功能強大和簡單易用兩個特征。
Java語言作為靜態(tài)面向對象編程語言的代表,極好地實現(xiàn)了面向對象理論,允許程序員以優(yōu)雅的思維方式進行復雜的編程。
Java具有簡單性、面向對象、分布式、健壯性、安全性、平臺獨立與可移植性、多線程、動態(tài)性等特點。Java可以編寫桌面應用程序、Web應用程序、分布式系統(tǒng)和嵌入式系統(tǒng)應用程序等。
2、C
C語言是一門面向過程的、抽象化的通用程序設計語言,廣泛應用于底層開發(fā)。C語言能以簡易的方式編譯、處理低級存儲器。
C語言是僅產(chǎn)生少量的機器語言以及不需要任何運行環(huán)境支持便能運行的高效率程序設計語言。
盡管C語言提供了許多低級處理的功能,但仍然保持著跨平臺的特性,以一個標準規(guī)格寫出的C語言程序可在包括類似嵌入式處理器以及超級計算機等作業(yè)平臺的許多計算機平臺上進行編譯。
3、python
Python是一種跨平臺的計算機程序設計語言。是一種面向對象的動態(tài)類型語言,最初被設計用于編寫自動化腳本(shell),隨著版本的不斷更新和語言新功能的添加,越多被用于獨立的、大型項目的開發(fā)。
4、C++
C++是C語言的繼承,它既可以進行C語言的過程化程序設計,又可以進行以抽象數(shù)據(jù)類型為特點的基于對象的程序設計,還可以進行以繼承和多態(tài)為特點的面向對象的程序設計。
C++擅長面向對象程序設計的同時,還可以進行基于過程的程序設計,因而C++就適應的問題規(guī)模而論,大小由之。
C++不僅擁有計算機高效運行的實用性特征,同時還致力于提高大規(guī)模程序的編程質量與程序設計語言的問題描述能力。
5、C#
C#是微軟公司發(fā)布的一種面向對象的、運行于.NET Framework和.NET Core(完全開源,跨平臺)之上的高級程序設計語言。并定于在微軟職業(yè)開發(fā)者論壇(PDC)上登臺亮相。
C#是面向對象的編程語言。它使得程序員可以快速地編寫各種基于MICROSOFT .NET平臺的應用程序,MICROSOFT .NET提供了一系列的工具和服務來最大程度地開發(fā)利用計算與通訊領域。
思路: 排序肯定還是要排的, 按照Java成績來進行排練. 然后排名的時候,進行比較. 如果這一名的成績和上一名的相同, 那么名次相同, 如果比上一名分數(shù)低,那么排名加一.
可以使用傳統(tǒng)的,集合排序,輸出. 也可以使用java8新提供的Stream API進行操作
參考代碼如下
import?java.util.*;
import?java.util.Map.Entry;
import?java.util.stream.Collectors;
class?Stu?{//?學生類
private?String?name;
private?double?score;//?成績
public?Stu(String?name,?double?score)?{
this.name?=?name;
this.score?=?score;
}
public?double?getScore()?{
return?score;
}
public?void?setScore(double?score)?{
this.score?=?score;
}
public?String?getName()?{
return?name;
}
public?void?setName(String?name)?{
this.name?=?name;
}
}
//測試類
public?class?TestDemo?{
public?static?void?main(String[]?args)?{
ListStu?stus?=?Arrays.asList(new?Stu("Tom",?79.5),?new?Stu("Jack",?52),?new?Stu("Amdy",?79.5),
new?Stu("Lucy",?68),?new?Stu("Cherry",?79.5),?new?Stu("Jerry",?52),?new?Stu("Sweet",?91),
new?Stu("Solem",?65));
fun1(stus);
System.out.println("---------------分割線---------------------");
fun2(stus);
}
//?方法一:傳統(tǒng)的方法
public?static?void?fun1(ListStu?stus)?{
//?按照成績排序
stus.sort(new?ComparatorStu()?{
@Override
public?int?compare(Stu?s1,?Stu?s2)?{
return?-Double.compare(s1.getScore(),?s2.getScore());
}
});
int?index?=?0;//?排名
double?lastScore?=?-1;//?最近一次的分
for?(int?i?=?0;?i??stus.size();?i++)?{
Stu?s?=?stus.get(i);
if?(Double.compare(lastScore,?s.getScore())!=0)?{?//?如果成績和上一名的成績不相同,那么排名+1
lastScore?=?s.getScore();
index++;
}
System.out.println("名次:"?+?index?+?"\t分數(shù)"?+?s.getScore()?+?"\t名字"?+?s.getName());
}
}
//?方法2:?Java8開始支持的Lambada表達式配合?Stream?API?來進行分組排序
public?static?void?fun2(ListStu?stus)?{
ListEntryDouble,?ListStu?list?=?stus.stream().collect(Collectors.groupingBy(Stu::getScore)).entrySet()
.stream().sorted((s1,?s2)?-?-Double.compare(s1.getKey(),?s2.getKey())).collect(Collectors.toList());
int?index?=?1;
for?(EntryDouble,?ListStu?entry?:?list)?{
System.out.print("名次:"?+?index?+?"\t分數(shù):"?+?entry.getKey()?+?"\t名字");
entry.getValue().forEach((s)?-?System.out.print("??"?+?s.getName()));
System.out.println();
index++;
}
}
}
輸出結果
名次:1 分數(shù)91.0 名字Sweet
名次:2 分數(shù)79.5 名字Tom
名次:2 分數(shù)79.5 名字Amdy
名次:2 分數(shù)79.5 名字Cherry
名次:3 分數(shù)68.0 名字Lucy
名次:4 分數(shù)65.0 名字Solem
名次:5 分數(shù)52.0 名字Jack
名次:5 分數(shù)52.0 名字Jerry
名次:1 分數(shù):91.0 名字??Sweet
名次:2 分數(shù):79.5 名字??Tom??Amdy??Cherry
名次:3 分數(shù):68.0 名字??Lucy
名次:4 分數(shù):65.0 名字??Solem
名次:5 分數(shù):52.0 名字??Jack??Jerry
---------------分割線---------------------
名次:1 分數(shù):91.0 名字??Sweet
名次:2 分數(shù):79.5 名字??Tom??Amdy??Cherry
名次:3 分數(shù):68.0 名字??Lucy
名次:4 分數(shù):65.0 名字??Solem
名次:5 分數(shù):52.0 名字??Jack??Jerry