本文用top的一些程式語言實現了最基本的演算法 - 氣泡排序,依次出場的語言:C、C++、python、js、java、go、rust、swift、kotlin、ruby、R、Scala。程式碼邏輯比較簡單,主要是對比學習下不同語言的語法和風格,也算一件比較有意思的事情。
C語言
#include <stdio.h>
void bubbleSort(int arr[], int n) {
for (int i = 0; i < n-1; i++) {
for (int j = 0; j < n-i-1; j++) {
if (arr[j] > arr[j+1]) {
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
}
int main() {
int arr[] = {64, 34, 25, 12, 22, 11, 90};
int n = sizeof(arr)/sizeof(arr[0]);
bubbleSort(arr, n);
for (int i = 0; i < n; i++)
printf("%d ", arr[i]);
return 0;
}
特點:C語言是一種通用的程序式程式設計語言,以高效性和可移植性著稱。它提供了對記憶體的直接操作能力,適合系統級程式設計。C語言廣泛應用於作業系統、嵌入式系統以及高效能應用開發。由於其簡潔的語法和強大的功能,C語言成為許多現代程式語言的基礎。
2. C++
#include <iostream>
using namespace std;
void bubbleSort(int arr[], int n) {
for (int i = 0; i < n-1; i++) {
for (int j = 0; j < n-i-1; j++) {
if (arr[j] > arr[j+1]) {
swap(arr[j], arr[j+1]);
}
}
}
}
int main() {
int arr[] = {64, 34, 25, 12, 22, 11, 90};
int n = sizeof(arr)/sizeof(arr[0]);
bubbleSort(arr, n);
for (int i = 0; i < n; i++)
cout << arr[i] << " ";
return 0;
}
特點:C++是C語言的擴充套件,支援物件導向的程式設計,適合開發複雜的應用程式。它結合了低階語言的效能和高階語言的抽象能力,廣泛用於遊戲開發、圖形處理和高效能運算。C++的標準模板庫(STL)提供了豐富的資料結構和演算法,極大提高了開發效率。
3. Python
def bubble_sort(arr):
n = len(arr)
for i in range(n):
for j in range(0, n-i-1):
if arr[j] > arr[j+1]:
arr[j], arr[j+1] = arr[j+1], arr[j]
return arr
# 示例
print(bubble_sort([64, 34, 25, 12, 22, 11, 90]))
特點:Python是一種高階程式語言,以其簡潔的語法和強大的庫而聞名。它支援多種程式設計正規化,包括物件導向、過程式和函數語言程式設計。Python廣泛應用於資料科學、機器學習、Web開發和自動化指令碼。其活躍的社群和豐富的第三方庫使得開發者能夠快速構建和原型化應用。
4. JavaScript
function bubbleSort(arr) {
let n = arr.length;
for (let i = 0; i < n-1; i++) {
for (let j = 0; j < n-i-1; j++) {
if (arr[j] > arr[j+1]) {
[arr[j], arr[j+1]] = [arr[j+1], arr[j]];
}
}
}
return arr;
}
// 示例
console.log(bubbleSort([64, 34, 25, 12, 22, 11, 90]));
特點:JavaScript是一種動態型別的指令碼語言,主要用於Web開發。它支援事件驅動和非同步程式設計,能夠在客戶端和伺服器端執行。隨著Node.js的出現,JavaScript的應用範圍擴充套件到了後端開發。其廣泛的庫和框架(如React、Angular、Vue)使得構建複雜的使用者介面變得更加容易。
5. Java
public class BubbleSort {
public static void bubbleSort(int[] arr) {
int n = arr.length;
for (int i = 0; i < n-1; i++) {
for (int j = 0; j < n-i-1; j++) {
if (arr[j] > arr[j+1]) {
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
}
public static void main(String[] args) {
int[] arr = {64, 34, 25, 12, 22, 11, 90};
bubbleSort(arr);
for (int num : arr) {
System.out.print(num + " ");
}
}
}
特點:Java是一種物件導向的程式語言,具有跨平臺性,廣泛應用於企業級應用和Android開發。Java的“寫一次,處處執行”理念使得它在不同平臺上具有良好的相容性。Java的強型別系統和豐富的庫支援使得開發複雜應用變得更加高效。
6. Go
package main
import "fmt"
func bubbleSort(arr []int) {
n := len(arr)
for i := 0; i < n-1; i++ {
for j := 0; j < n-i-1; j++ {
if arr[j] > arr[j+1] {
arr[j], arr[j+1] = arr[j+1], arr[j]
}
}
}
}
func main() {
arr := []int{64, 34, 25, 12, 22, 11, 90}
bubbleSort(arr)
fmt.Println(arr)
}
特點:Go是一種靜態型別、編譯型語言,由Google開發,強調簡潔性和高效性。它具有內建的併發支援,透過goroutines和channels實現高效的併發程式設計。Go的垃圾回收機制和強大的標準庫使得開發網路服務和雲應用變得更加簡單和高效。
7. Rust
fn bubble_sort(arr: &mut [i32]) {
let n = arr.len();
for i in 0..n-1 {
for j in 0..n-i-1 {
if arr[j] > arr[j+1] {
arr.swap(j, j+1);
}
}
}
}
fn main() {
let mut arr = [64, 34, 25, 12, 22, 11, 90];
bubble_sort(&mut arr);
println!("{:?}", arr);
}
特點:Rust是一種系統程式語言,強調安全性和效能,特別適合於併發和記憶體管理。Rust透過所有權系統避免了資料競爭和記憶體洩漏,提供了更高的安全性。其豐富的生態系統和Cargo包管理器使得開發高效能應用變得高效。
8. Swift
func bubbleSort(_ arr: inout [Int]) {
let n = arr.count
for i in 0..<n-1 {
for j in 0..<n-i-1 {
if arr[j] > arr[j+1] {
arr.swapAt(j, j+1)
}
}
}
}
// 示例
var arr = [64, 34, 25, 12, 22, 11, 90]
bubbleSort(&arr)
print(arr)
特點:Swift是一種現代程式語言,主要用於iOS和macOS應用開發。它結合了安全性和效能,提供了型別安全和記憶體管理。Swift的語法簡潔且易於閱讀,支援函數語言程式設計和麵向物件程式設計。隨著Swift的發展,越來越多的開發者選擇它來替代Objective-C。
9. Kotlin
fun bubbleSort(arr: IntArray) {
val n = arr.size
for (i in 0 until n - 1) {
for (j in 0 until n - i - 1) {
if (arr[j] > arr[j + 1]) {
val temp = arr[j]
arr[j] = arr[j + 1]
arr[j + 1] = temp
}
}
}
}
// 示例
fun main() {
val arr = intArrayOf(64, 34, 25, 12, 22, 11, 90)
bubbleSort(arr)
println(arr.joinToString(" "))
}
特點:Kotlin是一種現代程式語言,相容Java,主要用於Android開發。它具有簡潔的語法和強大的功能,支援空安全和擴充套件函式等特性。Kotlin的設計目標是提高開發效率,同時保持與Java的互操作性。其越來越受歡迎,成為Android開發的首選語言。
10. Ruby
def bubble_sort(arr)
n = arr.length
for i in 0...(n-1)
for j in 0...(n-i-1)
if arr[j] > arr[j+1]
arr[j], arr[j+1] = arr[j+1], arr[j]
end
end
end
arr
end
# 示例
puts bubble_sort([64, 34, 25, 12, 22, 11, 90]).inspect
特點:Ruby是一種動態、物件導向的程式語言,以其優雅的語法和開發效率著稱。Ruby強調開發者的幸福感,支援多種程式設計正規化。Ruby on Rails框架使得Web開發變得高效和簡單,吸引了大量開發者。其活躍的社群和豐富的庫支援進一步促進了Ruby的普及。
11. R
bubble_sort <- function(arr) {
n <- length(arr)
for (i in 1:(n-1)) {
for (j in 1:(n-i)) {
if (arr[j] > arr[j+1]) {
temp <- arr[j]
arr[j] <- arr[j+1]
arr[j+1] <- temp
}
}
}
return(arr)
}
# 示例
print(bubble_sort(c(64, 34, 25, 12, 22, 11, 90)))
特點:R是一種專門用於統計計算和資料分析的程式語言,具有強大的資料處理和視覺化能力。它提供了豐富的統計模型和圖形工具,廣泛應用於資料科學和學術研究。R的包生態系統非常活躍,使用者可以輕鬆獲取和使用各種資料分析工具。
12. Scala
object BubbleSort {
def bubbleSort(arr: Array[Int]): Array[Int] = {
val n = arr.length
for (i <- 0 until n - 1) {
for (j <- 0 until n - i - 1) {
if (arr(j) > arr(j + 1)) {
val temp = arr(j)
arr(j) = arr(j + 1)
arr(j + 1) = temp
}
}
}
arr
}
def main(args: Array[String]): Unit = {
val arr = Array(64, 34, 25, 12, 22, 11, 90)
println(bubbleSort(arr).mkString(" "))
}
}
特點:Scala是一種融合了物件導向和函數語言程式設計的語言,執行在Java虛擬機器上。它與Java高度相容,允許開發者利用Java的庫和框架。Scala的型別推導和高階函式使得程式碼更加簡潔和表達力強,廣泛應用於大資料處理和分散式系統開發。