C# 中的插入排序
插入排序是一種排序演算法,它一次取一個元素,並將其插入到陣列中的正確位置。此過程一直持續到陣列排序完畢。
以下是 C# 中演示插入排序的程式。
示例
using System;
namespace InsertionSortDemo {
class Example {
static void Main(string[] args) {
int[] arr = new int[10] { 23, 9, 85, 12, 99, 34, 60, 15, 100, 1 };
int n = 10, i, j, val, flag;
Console.WriteLine("Insertion Sort");
Console.Write("Initial array is: ");
for (i = 0; i < n; i++) {
Console.Write(arr[i] + " ");
}
for (i = 1; i < n; i++) {
val = arr[i];
flag = 0;
for (j = i - 1; j >= 0 && flag != 1; ) {
if (val < arr[j]) {
arr[j + 1] = arr[j];
j--;
arr[j + 1] = val;
}
else flag = 1;
}
}
Console.Write("
Sorted Array is: ");
for (i = 0; i < n; i++) {
Console.Write(arr[i] + " ");
}
}
}
}輸出
上述程式的輸出如下。
Insertion Sort Initial array is: 23 9 85 12 99 34 60 15 100 1 Sorted Array is: 1 9 12 15 23 34 60 85 99 100
現在,讓我們瞭解一下上述程式。
首先初始化陣列,並使用 for 迴圈列印其值。這可以在以下程式碼段中看到 −
int[] arr = new int[10] { 23, 9, 85, 12, 99, 34, 60, 15, 100, 1 };
int n = 10, i, j, val, flag;
Console.WriteLine("Insertion Sort");
Console.Write("Initial array is: ");
for (i = 0; i < n; i++) {
Console.Write(arr[i] + " ");
}巢狀 for 迴圈用於實際排序過程。在外層 for 迴圈的每次傳遞中,都會將當前元素插入到陣列中的正確位置。此過程一直持續到陣列排序完畢。這可以在以下程式碼段中看到。
for (i = 1; i < n; i++) {
val = arr[i];
flag = 0;
for (j = i - 1; j >= 0 && flag != 1; ) {
if (val < arr[j]) {
arr[j + 1] = arr[j];
j--;
arr[j + 1] = val;
} else flag = 1;
}
}最後,顯示已排序的陣列。這可以在以下程式碼段中看到。
Console.Write("
Sorted Array is: ");
for (i = 0; i < n; i++) {
Console.Write(arr[i] + " ");
}
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP