基本排序算法


      排序(sorting)是计算机程序设计中的一种重要操作,它的功能是将一个数据元素(或记录)的任意序列重新排序成一个按关键字有序的序列。再待排序的文件中,若存在多个关键字相同的记录,经排序后,这些具有相同关键字的记录之间的相对次序保持不变,该排序方法是稳定的;若具有相同关键字的记录之间的相对次序发生变化,则称这种排序方法是不稳定的。

      查找(searching)根据给定的某个值,在查找表(一个数据集合)中确定一个其关键字等于给定值的记录或数据元素。


一、基本排序算法

1.1   插入排序 

插入排序的基本思路:每次将一个待排序的记录,按其关键字大小插入前面已经排好序的子文件中的适当位置,直到全部记录插入完成为止。

示例: 

void insert_sort(int a[10])
{
    for(int i=2;i<10;i++)
    {
        int j=i-1;
        a[0]=a[i];         //付给0设置哨点
        while(a[0]<a[j])
         {
            a[j+1]=a[j];   //元素后移
            a[j]=a[0];
            j--;
          }
     }
}

1.2   冒泡排序 

冒泡排序的基本思想是:

  依次比较相邻的两个数,将大的数放在后面,小的数放在前面。首先比较第一个和第二个数,然后比较第二个和第三个数,如此继续,直至比较最后两个数。用二重循环实现,外循环变量设为i,内循环变量设为j。外循环重复n-1次,内循环依次重复n-1,n-2,...,1次每次进行比较的两个元素都与内循环j有关。

示例: 

void bubble_sort(int n, int a[])
{
	for (int i = 0; i < n - 1; i++)
	{
		for (int j = i + 1; i < n; j++)
		{
			if (a[i] > a[j])
			{
				int temp = a[i];
				a[i] = a[j];
				a[j] = temp;
			}
		}
	}
}

1.3   快速排序 

快速排序是目前比较好的排序算法,它是由C.A.Hoare发明并命名的。

快速排序的基本算法思想是:通过一次分割,将无序序列分为两部分,通过对每一部分均值的比较来进行排序,要求前面均值的小于后面。

只需要了解快速排序的思想,使用C语言在实际运用中可以用qsort函数,C++中可以用sort函数,并不需要去手写快速排序的代码。

但俺还是把代码示例放在下面了(~ ̄▽ ̄)~

int Quick_sort(ElemType A[],int left, int right)
{
	tmp = A[(left+right)/2];
	do 
	{
		while (A[i] < tmp && i < right)
			i++;
		while (A[j] > tmp && j > left)
			j--;
		if (i <= j)
		{
			swap(A[i], A[j]);
			i++;
			j--;
		}
	} 	while (i <= j);
	if (left < j) Quick_sort(A, left, j);
	if (i <right ) Quick_sort(A, i, right);
	return 1;
}

1.4   其他排序 

  排序的算法还有很多,如希尔排序、选择排序、堆排序、归并排序、桶排序等。此处比意义列举了。ψ(`∇´)ψ

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值