快速排序的算法代码(简单排序代码)
admin
2023-01-23 20:18:00

1.一般来说,最快的排序算法是()A:归并排序B:快速排序C:插入排

B:快速排序 现在开始,我们要接触高效排序算法了.实践证明,快速排序是所有排序算法中最高效的一种.它采用了分治的思想:先保证列表的前半部分都小于后半部分,然后分别对前半部分和后半部分排序,这样整个列表就有序了.这是一种先进的思想,也是它高效的原因.各个算法时间复杂度比较: 平均时间复杂度 插入排序 O(n2) 冒泡排序 O(n2) 选择排序 O(n2) 快速排序 O(n log n) 堆排序 O(n log n) 归并排序 O(n log n) 基数排序 O(n) 希尔排序 O(n1.25)。

2.C语言快速排序的代码

首先我赞成你直接要代码的这种方法。

从你这个提问可以看出你对常用的排序算法都接触过,并且都没搞懂到底是怎么回事。

现在的电子平台资源都很丰富了,硬件平台的运行速度可以做到很高了,在大多数的情况下可以考虑用空间换时间的方法,也就是说你应该先搞懂算法的本质,然后再自己去实现它,开始的时候可以不考虑时间上的损耗。

排序的本质就是两个数比较大小,并根据其大小将其放到相应的位置。

记住其本质是什么,你自己绝对可以使用相应的语言实现它。

3.谁能给份快速排序的代码

public class QuickSort

{

public static void main(String[] args)

{

int []array={3,1,2};

quickSort(array,0,2);

for(int i:array)

System.out.println(i);

}

public static void quickSort(int[] arr, int l, int r) // 分划交换排序,快速排序

{

if (l >= r) // 递归出口

return;

int i, j, k;

int t;

k = arr[l];

i = l;

j = r + 1;

while (i {

do

{

i++;

}

while (ido

{

j--;

}

while (j>=0 && arr[j] >k);

if (i {

t = arr[i];

arr[i] = arr[j];

arr[j] = t;

}

}

t = arr[l]; // 最左边的关键词放到它最终的位置

arr[l] = arr[j];

arr[j] = t;

quickSort(arr, l, j - 1); // 递归排序左边和右边

quickSort(arr, j + 1, r);

}

}

4.求快速排序算法的代码

BOOL QuickSort(U16*p,int num)

{

int i;

int n_small=1,n_big=num-1;//升序

U16 m_key=p[0];

BOOL xiaokong=true;//小头有空

int m_free = 0;

if(num<=1)return true;///递归终止条件

for(i=0;i

{

if(xiaokong)//小头有空

{

if(p[n_big]

{

p[m_free]=p[n_big];

m_free=n_big;

xiaokong=false;

}

n_big--;

}

else//大头有空

{

if(p[n_small]>m_key)

{

p[m_free]=p[n_small];

m_free=n_small;

xiaokong=true;

}

n_small++;

}

}

if(m_free != 0)

{

p[m_free]=m_key;

}

//printf("num=%d[", num);

//for( i = 0; i< num; i++) printf("%d,", p[i]);

//printf("]key=%d, mid = %d, small=%d, big=%d, from %d num %d && from %d num %d\n",

// m_key, m_free, n_small, n_big, 0,m_free, m_free+1, num-(m_free+1) );

if(QuickSort(&p[0],m_free) && QuickSort(&p[m_free+1],num-(m_free+1) ) )

{

return true;

}

return false;

}

void QuickSortTest(void)

{

int i;

U16 sortTest[20] = {23,4,6,9,5,7,4,12,12,23,4,9999,89,1000,1000,4,2334,989,12,20};

U16 sortTest2[10] = {10,9,8,7,6,5,4,3,2,1};

U16 sortTest3[10] = {0,1,2,3,4,5,6,7,8,9};

for( i = 0; i<20; i++) printf("%d,",sortTest[i]); printf("\n");

QuickSort( sortTest, 20);

for( i = 0; i<20; i++) printf("%d,",sortTest[i]); printf("\n");

for( i = 0; i<10; i++) printf("%d,",sortTest2[i]); printf("\n");

QuickSort( sortTest2, 10);

for( i = 0; i<10; i++) printf("%d,",sortTest2[i]); printf("\n");

for( i = 0; i<10; i++) printf("%d,",sortTest3[i]); printf("\n");

QuickSort( sortTest3, 10);

for( i = 0; i<10; i++) printf("%d,",sortTest3[i]); printf("\n");

}


相关内容

热门资讯

英媒:欧盟试图对世界贸易组织的... 格隆汇1月21日|据英国金融时报,欧盟已提议给予世贸组织成员国更多提高关税的自主权,这是该集团为应对...
北京产权交易所:“十四五”期间... (来源:中华工商网)转自:中华工商网  【记者郭钇杉北京报道】近日,记者从北京产权交易所获悉,“十四...
幸福零距离:一个山区城市的中国... 中新网丽水1月21日电(黄彦君)浙江省丽水市莲都区位于该省西南部,作为典型的山区城市,其一度面临公共...
加拿大总理卡尼:旧秩序不会回来... 中青报·中青网记者 赵婷婷“加拿大人知道,我们过去那种认为我们的地理位置和同盟关系能自动带来繁荣、安...
评论|电信运营商“二次放号”,... 您有没有遇到过这样的困扰:新手机号注册APP,却直接进入陌生人的云端相册;明明是刚启用的号码,却不断...