插入排序是最简单的排序算法 :
看了看书按照书上说的对插入排序进行了实现:
public static void sort() {
for(int i=0;i<a.length;i++) {
for(int j=i;j>0&&a[j] < a[j-1];j--) {
Utils.swap(j, j-1, a);
}
}
}
public static void sort() {
for(int i=0;i<a.length;i++) {
for(int j=i;j>0&&a[j] < a[j-1];j--) {
Utils.swap(j, j-1, a);
}
}
}
swap的实现如下:
public static void swap(int i,int m, int a[]) {
int temp = a[i];
a[i] = a[m];
a[m] = temp;
}
这种方式中主要是对目标值位置不断的移动来保证数据左小右大的排列
但是这种方式可以进一步的改进:
public static void sort2() {
for(int i=0;i<a.length;i++) {
int temp = a[i];
int j=i;
for(;j>0 && a[j-1]>temp;j--) {
a[j] = a[j-1];
}
a[j] = temp;
}
}
这样赋值的次数会减少很多哦,效率也有了进一步的提高
分享到:
相关推荐
插入排序是一种基础且重要的排序算法,它的工作原理类似于人们整理扑克牌的过程。在这个过程中,我们首先将一副未排序的牌看作一个无序序列,然后每次取出一张牌,将其插入到已排序序列的正确位置,直到所有牌都插入...
基于C++的直接插入排序实现如下: 首先,定义一个函数 insertionSort,它接受一个整型数组和数组的大小作为参数。然后,通过两个嵌套的循环实现排序逻辑。外层循环从第二个元素开始(索引为1),逐个处理未排序部分...
### 插入排序实现 #### 一、概述 插入排序是一种简单直观的排序算法,它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上通常采用in-place排序...
接下来,我们来看C语言中的插入排序实现。以下是一个简单的C语言代码示例: ```c #include void insertion_sort(int arr[], int n) { int i, key, j; for (i = 1; i ; i++) { key = arr[i]; j = i - 1; /* ...
根据给定的部分代码,我们可以看到一个典型的插入排序实现: ```cpp void insert_sort(int* d, int n) { for (int i = 1; i ; i++) { // 从第二个元素开始 int t = d[i]; // 当前需要插入的元素 int p = i; ...
插入排序的C++实现,初学者必看,简单实用
本文将深入探讨C语言实现的插入排序及其相关知识点。 首先,理解插入排序的基本思想至关重要。在插入排序中,我们假设数组分为两部分:已排序部分和未排序部分。初始时,已排序部分只有一个元素(数组的第一个元素...
以下是一个基础的C#插入排序实现: ```csharp public static void InsertionSort(int[] arr) { for (int i = 1; i ; i++) { int key = arr[i]; int j = i - 1; // 将比key大的元素向后移动 while (j >= 0 &&...
实现以下常用的内部排序算法并进行性能比较:"直接插入排序"," 折半插入排序"," 2—路插入排序"," 表插入排序"," 希尔排序"," 起泡排序"," 快速排序"," 简单选择排序"," 树形选择排序"," 堆排序"," 归并排序"," 链式...
### C#中的插入排序实现 #### 命名空间与类定义 该程序使用了`System`、`System.Collections.Generic`、`System.Linq`和`System.Text`命名空间,但实际的排序算法仅使用了`System`中的`Console`类进行输入输出操作...
全面的排序算法实现,包括插入排序、合并排序、堆排序、快速排序。 堆排序:HeapSort 讲解详见http://blog.csdn.net/fly_yr/article/details/8550701 插入排序:InSertion_Sort 讲解详见...
#### 三、直接插入排序实现 在给出的代码示例中,直接插入排序是通过以下函数实现的: ```c void Insert(SqList& L) { int i, j; for (i = 2; i ; ++i) if (Lt(L.r[i].key, L.r[i - 1].key)) { L.r[0] = L.r[i]...
本文将详细讲解六种经典的排序算法——合并排序、插入排序、希尔排序、快速排序、冒泡排序以及桶排序,并结合提供的文件名(sort.c、set.c、main.c、set.h、sort.h)推测出每个文件可能包含的代码实现。 1. **合并...
在Java中实现插入排序,主要涉及数组操作和循环控制,我们可以从以下几个方面来理解这个过程。 1. **基本概念** 插入排序在实际操作中类似于打扑克牌,每拿到一张新牌(数组中的元素),就将其插入到已排序的序列...
经典的插入排序算法,C语言实现,数据结构必备
C#中的插入排序实现 #### 示例一:使用嵌套循环实现插入排序 ```csharp using System; namespace InsertionSort { class Program { static void Main(string[] args) { int[] a = new int[] { 2, 1, 4, 3, ...
c++实验之一:简单插入排序 实现简单排序方法
根据给定的文件信息,我们可以总结出以下关于“C++实现插入排序”的相关知识点: ### 一、插入排序算法概述 插入排序(Insertion Sort)是一种简单直观的比较排序算法。它的工作原理是通过构建有序序列,对于未...
### 插入排序C语言算法实现 在计算机科学领域,排序算法是数据处理中的核心组件之一,用于将一组数据按照特定顺序排列。插入排序是一种简单直观的比较排序算法,其工作原理类似于人们日常生活中整理卡片的过程。...