永发信息网

利用C语言帮我分别利用 Bubble sort 及 Quick sort 两种的方法写分别各写一个排列的程式码

答案:1  悬赏:40  手机版
解决时间 2021-02-01 17:09
  • 提问者网友:像風在裏
  • 2021-02-01 02:46
利用c语言分别以bubble sort及quick sort各写排列,最后还要建立一个文件,文件内随意输入数字,因为在执行期间时,需要输入文件路径,然后排列文件内的数字,所以一大段的程式码当中必须包括输入文件路径的程式码及 bubble sort 和 quick sort 各的程式码,麻烦各位朋友的帮助,因为尽快要交了
最佳答案
  • 五星知识达人网友:逃夭
  • 2021-02-01 03:43
分析:
冒泡排序(bubble sort)的思想是在每一次排序过程,通过相邻元素的交换,将当前没有排好序中的最大(小)移到数组的最右(左)端。而选择排序的思想也很直观:每一次排序过程,我们获取当前没有排好序中的最大(小)的元素和数组最右(左)端的元素交换,循环这个过程即可实现对整个数组排序,其算法的时间复杂度为O(N^2)
而快速排序(quick sort)使用的是分治的思想,先选定一个值,再将比这个值小的元素放在它的左(右)边,将比它大的放在另一边;然后在左边的元素中再找一个值,重复上面的操作;在右边也进行相同的操作,最后整个数组就会被排好顺序了,这个算法的时间复杂度为O(NLOGN),但是很不稳定。
下面是程序:
#include<stdio.h>
void main()
{
int a[1000] ; //存放数字
if ((fp = fopen("X:\...这里是文件夹的名字\你建的文件.txt", "w")) == NULL) {
printf("没有找到文件!\n");
exit(0);
}
printf("输入数组:");
while(i!=-1)
scanf("%d", &a[i]);
fputs(a[i], fp);
fclose(fp);
//读取仿照着上面的写,相反
//分别调用bubblesort算法和quicksort算法
}

int bubblesort(int a[],int p,int r)
{
int x,j,i,temp;
x=a[r]; //直接选取最后个元素划分
i=p-1;
for (j=p;j<r;j++)
{
if (a[j]<=x)
{
i++;
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
temp=[i+1];
a[i+1]=a[r];
a[r]=temp;
return i+1;
}

void quicksort(int arr[],int p,int r)
{
int q;
if (p<r)
{
q=partition(arr,p,r);
quicksort(arr,p,q-1);
quicksort(arr,q+1,r);
}
}
希望对你有所帮助!
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯