求C#中选择排序法和插入排序法

如题所述

第1个回答  推荐于2016-11-24
//选择排序
public void SelectionSotr(int[] arr)
{
int min, temp;
int upper = arr.GetUpperBound(0);
for (int outer = 0; outer <= upper; outer++)
{
min = outer;
for (int inner = outer+1; inner <= upper; inner++)
{
if (arr[inner] < arr[min]) min = inner;
}
temp = arr[outer];
arr[outer] = arr[min];
arr[min] = temp;
}
//循环输出即可 输出函数省略
}

//插入排序
public void InsertionSort(int[] arr)
{
int inner, temp;
int upper = arr.GetUpperBound(0);
for (int outer = 0; outer <= upper; outer++)
{
temp = arr[outer];
inner = outer;
while (inner>0 && arr[inner-1]>=temp)
{
arr[inner] = arr[inner - 1];
inner -= 1;
}
arr[inner] = temp;

}
//循环输出即可 输出函数省略
}本回答被提问者采纳

asp.net C#中四种常用排序法哪个比较快,哪个比较好?
列为最后一组以次类推,在各组内用插入排序,然后取d'<d,重复上述操作,直到d=1。优点:快,数据移动少;缺点:不稳定,d的取值是多少,应取多少个不同的值,都无法确切知道,只能凭经验来取。4 快速排序 快速排序是冒泡排序的改进版,是目前已知的最快的排序方法。已知一组无序数据a[1]、a...

求C语言直接插入排序,选择排序,冒泡排序的源代码,能直接运行的最好,谢...
插入排序:用指针和插入排序法对数组中10个整数按由小到大排序。include"stdio.h"include"conio.h"main(){ inta[10],r[11];int *p;int i,j;for(i=0;i<10;i++){ p=&a[i];printf("pleasescan the NO: %d\\n",i);scanf("%d",p); \/*因为p是指针变量,本身代表地址,所以不需加...

求c语言选择排序法和 冒泡排序法代码!
选择法的算法: 假设需要对10个数进行排序,那么首先找出10个数里面的最小数,并和这个10个数的第一个(下标0)交换位置,剩下9个数(这9个数都比刚才选出来那个数大),再选出这9个数中的最小的数,和第二个位置的数(下标1)交换,于是还剩8个数(这8个数都比刚才选出来的大).. 依...

请教一下C#中的各种排序原理详细解答
\/\/移动 i--;\/\/查找 } L[i+1]=L[0];\/\/将元素插入 } i=j-1;\/\/还原有序区指针 } } 2.希尔排序 原理:又称增量缩小排序。先将序列按增量划分为元素个数相同的若干组,使用直接插入排序法进行排序,然后不断缩小增量直至为1,最后使用直接插入排序完成排序。 要点:增量的选择以及排序最终以...

c语言中数组排序里的插空排序法是什么意思啊?
插入排序法是一种数组元素排序方法,冒泡法也是。两者是不同的排序,两者时间复杂度为n的平方,而冒泡法更直观一点。插入排序就相当于打牌,假如你手里的牌是从小到大排好序的,那么你每摸一张牌,你就会根据这张牌的大小寻找这张牌应该插入的位置,然后插进去。选择排序就是你一下获得了所有的牌,...

...利用两种排序方法将数据排序,计算出两种排序时间.
}一 插入排序 该算法在数据规模小的时候十分高效,该算法每次插入第K+1到前K个有序数组中一个合适位置,K从0开始到N-1,从而完成排序:package algorithms;\/ author yovn \/ public class InsertSorter<E extends Comparable<E>> extends Sorter<E> { \/* (non-Javadoc)see algorithms.Sorter#sort(...

C语言 分别用冒泡,选择,插入对n个数进行排序。
\/\/选择排序#include<stdio.h>void main(){int i,n,j,k,temp,a[100]; printf("Input n:\\n"); scanf("%d",&n); printf("Input the arry:\\n"); for(i=0;i<n;i++) scanf("%d",&a[i]); for(i=0;i<n;i++) { k=i; \/*给记号赋值*\/ for(j=i+1;j<n;j+...

排序算法性能比较(数据结构)C语言程序
冒泡排序:两个循环,从1加到N,(1+N)N\/2 = 500500,最坏交换情况是每次判断都要交换,既500500*3次 选择排序:也是两个循环,比较次数跟冒泡排序一样500500,但是这个只要底层循环交换,既只需1000*3 = 3000次赋值。插入排序:循环次数一样500500,但是这个最坏情况是每比较一次就赋值一次,既需...

选择法与插入法
插入排序的原理:将元素逐个插入到有序排列之中,其特点是要不断的移动数据,空出一个适当的位置,把待插入的元素放到里面去。有点像我们的排队, 还有打扑克时候的理牌。选择排序:public void selectSort(T[] arr){ int pos;for(int i = 0; i < arr.length; i++){ pos = i;for(int ...

c语言考试。问数组,常见的数组排序算法有那几种?选择一个描述过程。_百...
有插入排序:直接插入排序、折半插入排序、希尔排序;交换排序:冒泡排序、快速排序;选择排序:简单选择排序、堆排序;归并排序;基数排序。常用冒泡排序的基本概念是:依次比较相邻的两个数,将小数放在前面,大数放在后面(数组由小到大排序)。即首先比较第1个和第2个数,将小数放前,大数放后。然后...

相似回答