问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
你好,欢迎来到懂视!登录注册
当前位置: 首页 - 正文

用C语言编写函数,要实现快速排序算法或者冒泡法

发布网友 发布时间:2022-04-29 20:37

我来回答

3个回答

热心网友 时间:2022-05-22 02:46

冒泡法排序函数如下:
void bubble(int a[],int n)
{int i,j,t;
for(i=0;i<n-1;i++)/*共进行n-1轮*/
for(j=0;j<n-1-i;j++)/*每轮在前n-i个数中比较*/
if(a[j]>a[j+1]) /*若相邻元素逆序*/
{t=a[j]; a[j]=a[j+1];a[j+1]=t;}/*就交换*/
}

void sort(int *a, int left, int right)
{
if(left >= right)/*如果左边索引大于或者等于右边的索引就代表已经整理完成一个组了*/
{
return ;
}
int i = left;
int j = right;
int key = a[left];
while(i < j) /*控制在当组内寻找一遍*/
{
while(i < j && key <= a[j])
/*而寻找结束的条件就是,1,找到一个小于或者大于key的数(大于或小于取决于你想升
序还是降序)2,没有符合条件1的,并且i与j的大小没有反转*/
{
j--;/*向前寻找*/
}
a[i] = a[j];
/*找到一个这样的数后就把它赋给前面的被拿走的i的值(如果第一次循环且key是
a[left],那么就是给key)*/
while(i < j && key >= a[i])
/*这是i在当组内向前寻找,同上,不过注意与key的大小关系停止循环和上面相反,
因为排序思想是把数往两边扔,所以左右两边的数大小与key的关系相反*/
{
i++;
}
a[j] = a[i];
}
a[i] = key;/*当在当组内找完一遍以后就把中间数key回归*/
sort(a, left, i - 1);/*最后用同样的方式对分出来的左边的小组进行同上的做法*/
sort(a, i + 1, right);/*用同样的方式对分出来的右边的小组进行同上的做法*/
/*当然最后可能会出现很多分左右,直到每一组的i = j 为止*/
}

热心网友 时间:2022-05-22 04:04

快排:
#include <stdio.h>

int qsort(int* a,int low,int high)
{
int temp = a[low];
while(low<high)
{
while(low < high && temp < a[high])
--high;
a[low] = a[high];

while(low < high && temp > a[low])
++low;
a[high] = a[low];
}
a[low] = temp;

return low;
}

void sort(int* a,int low,int high)
{
int temp;
if(low<high)
{
temp = qsort(a,low,high);
qsort(a,low,temp-1);
qsort(a,temp+1,high);
}
}

int main()
{
int list[] = {4,5,6,3,7,1};

sort(list,0,5);

char i;
for(i=0;i<6;i++)
printf("%3d",list[i]);
printf("\n");

return 0;
}
冒泡:
void sort(int *a,int len)//参数1,表示数组,参数2表示数组长度
{
int i,j,t;

for(i=0;i<len-1;i++)
{
for(j=0;j<len-1-i;j++)
{
if(a[j]<a[j+1])
{
t = a[j];
a[j] = a [j+1];
a[j+1] = t;
}
}
}
}
都是自己平时写的,全部可以调试通过,快排要是看不懂加我Q,285296372~

热心网友 时间:2022-05-22 05:38

冒泡很简单,两个for循环嵌套就行了
void bubble(vector<int> &put)// put容器内放入要排序的数据即可
{
int temp;
temp=put[0];
for(int i=1;i!=put.size();i++)
for(int j=0;j<i;j++)
if(put[j]>put[i])
{
temp=put[i];
put[i]=put[j];
put[j]=temp;
}
}
c语言大师求破,麻烦把快速、冒泡、选择以及升序降序各做一次,多谢...

include&lt;stdio.h&gt;#include&lt;malloc.h&gt;void QuickSort(int a[],int numsize) //快速排序 升序{int i=0,j=numsize-1;int val=a[0];if(numsize&gt;1){while(i&lt;j){for(;j&gt;i;j--)if(a[j]&lt;val) //降序把 &lt; 改为: &gt;{a[i]=a[j];break;}for(;i&lt;j;i++)if(a[i]&gt;val) //降...

c语言中如何排序?

1. 冒泡排序(Bubble Sort):```c void bubbleSort(int arr[], int n) { for (int i = 0; i &lt; n-1; i++) { for (int j = 0; j &lt; n-i-1; j++) { if (arr[j] &gt; arr[j+1]) { int temp = arr[j];arr[j] = arr[j+1];arr[j+1] = temp;} } } } ``...

用C语言编写函数实现快速排序(升序),在主函数中输入数组数据,并调用该...

//排序的算法是二分法,N的对数时间复杂度。。。//如果有疑问,我们可以再探讨。。。include&lt;stdlib.h&gt; include&lt;string.h&gt; include&lt;stdio.h&gt; bool merge(int * array,int p,int q,int r){ if(!(p&lt;&lt;q&lt;r)&amp;&amp;p&gt;=0&amp;&amp;r&lt;=sizeof(array)/sizeof(array[0])-1){ return false;} int * le...

用C语言,随机输入10个整数,用冒泡排序法对这些整数进行从小到大排序...

int b[10]={9,10,11,12,1,2,3,4,0,1};int c[10]={1,2,3,4,13,14,15,16,2,3};int i;printf("请输入待排序的10个数:");for(i=0;i&lt;10;i++){ scanf("%d",&amp;a[i]);} fun(a);printf("\n排序后的数列如下:\n");for(i=0;i&lt;10;i++){ printf("%2d ",a[i...

C语言实现将数组的六个元素按从小到大的顺序输出?

C语言实现将数组的六个元素按从小到大的顺序输出,可以采用内部排序算法对数组的元素进行排序,然后输出排序后的数组,就可以得到按从小到大的顺序输出。以快速排序为例的排序代码:void quickSort(int a[],int l,int r) { if(l&gt;=r)return;int i = l;int j = r;int key = a[l];//选择...

c语言三种排序

常用的c语言排序算法主要有三种即冒泡法排序、选择法排序、插入法排序。一、冒泡排序冒泡排序:是从第一个数开始,依次往后比较,在满足判断条件下进行交换。代码实现(以降序排序为例)include&lt;stdio.h&gt; int main(){ int array[10] = { 6,9,7,8,5,3,4,0,1,2 };int temp;for (int i = ...

C语言,输入一组数进行排序,由大到小排列,用自定义函数实现

给你一个直接插入排序 include "stdio.h"void InsertSort(int a[], int left, int right) {//对数组a从下标为left到right区域进行直接插入排序 int i, j, tmp;for(i = left + 1; i &lt;= right; i++) { for(j = i - 1, tmp = a[i]; j &gt;= left &amp;&amp; tmp &gt; a[j]; j++...

冒泡排序法和快速排序比较的算法

这个问题,那么我的答案就是:在我编写的《Programming Pearls, Second Edition》(Addison-Wesley)一书中给出的Quichsort算法。在示例2-1中给出了用C语言编写的Quicksort函数。我们在接下来的章节中将进一步地研究和改善这个函数。【示例】 2-1 Quicksort函数void quicksort(int l, int u){ int i, m;if (l ...

C语言冒泡排序。

void main(){ int a[10];int i,j,t;printf("input 10 numbers:\n");for(i=0;i&lt;10;i++)scanf("%d",&amp;a[i]);for(j=0;j&lt;9;j++) /*进行9次循环 实现9趟比较*/ for(i=0;i&lt;9-j;i++) /*在每一趟中进行9-j次比较*/ if(a[i]&gt;a[i+1]) /*相邻两个数比较,想降序...

C语言快速排序

/快速排序算法/ int Partition(int D[], int l, int r){ D[0]=D[l];while (l&lt;r) { while (l&lt;r &amp;&amp; D[0]&lt;D[r]) r--;D[l]=D[r];while (l&lt;r &amp;&amp; D[0]&gt;=D[l]) l++;D[r]=D[l]; } D[r]=D[0];return r;} void Qsort(int D[], int l, int r){ int p...

声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com
万年青的作用有哪些?万年青功效作用大全! 高压锅煮粥煮湖了怎么办? 广东万年青的功效和作用(万年青是什么菜) 万年青的作用有哪些?万年青的作用与功效 植物万年青的功效与作用 煲粥时很容易糊锅,怎么办 倒走有哪些好处和坏处 倒走的好处和坏处 倒走对身体有什么好处 倒退走路对身体有什么好处 ...魂魄回来报仇 有个师傅带我降服她。 是什么意思? 美图秀秀好看的英文字体,最好附图。 c语言快速排序 谁能给我讲讲下面的代码啥意思 请哥哥姐姐为我设计个简单的快速排序算法,C语言的,谢谢啦! 英文漂亮手写字体都有哪些?求大神回复,常用的那种 C语言快速排序 漂亮的英文字体 C语言有算法怎么做快速排序呢。 用C语言编写一个快速排序算法 输入10个数 [英文字体]有哪些很漂亮的?求详细! 要好看的英文字体,发图,满意必采纳 c语言实现快速排序 C语言的快速排序的算法是什么啊? 关于快速排序C语言算法 快速排序算法c语言 C语言,快速排序算法 C语言快速排序的代码 C语言快速排序代码 上海黄金交易所,在合肥有分公司么? 如何快速将CAD标注尺寸对齐?- 问一问 CAD中如何快速标注尺寸? C语言 快速排序 求一款英文字体。!!!有图片。对了分全给你了 最好给上效果图。 怎样使用C语言实现如下算法: 输入任意10个数,用快速排序算法,按降序排序后输出 如何评价电影《超强台风》? 电影《超强台风》中的外国人为什么一直和台风战斗? 电影《超强台风》中有哪些不合理的设定? 请问eclipse搭建SSM(spring+springmvc+mybatis)一定要用maven来搭建吗 对电影《超强台风》的评价 海螺肉里什么东西不能吃 超强台风电影 电影&lt;超级台风&gt;是怎样拍摄的? 电影(超强台风)读后感 电影《超强台风》里讲的是真的吗?具体是哪一年登录的 一般的空调风机电容多大 超强台风的主要内容 求超强台风高清百度云资源 京瓷181kx打印机的双面打印怎么设置?属性-基本里面的双面打印是灰色的 掐人中应该怎么掐?带图 超强台风电影是在那里拍摄的 怎样在爱剪辑中背景音乐循环播放
  • 焦点

最新推荐

猜你喜欢

热门推荐