递归与分治法实现快速排序算法,输入一串以英文字符逗号隔开的数字,按升序排列法实现快速排序算法,提交实验报告。
要求:
1、以word形式提交实验报告,其中运行结果包含3个测试用例。
2、源码project名称,或类名,或代码注释等形式,体现个人信息,如姓名和学号。
3、word命名:班级+学号+姓名+算法分析第2章实验报告
1条回答 默认 最新
关注
#include<iostream> using namespace std; void quickSort(int a[], int, int);//原型声明 int main() { int array[100] = {0}, k, i = 0, len = 0; char c; do { scanf("%d", &array[i]); i++, len++; c = getchar(); } while (c != '\n'); cout << "The orginal arrayare:" << endl; for ( k = 0; k<len; k++) cout << array[k] << " "; cout << endl; quickSort(array, 0, len - 1); cout << "The sorted arrayare:" << endl; for (k = 0; k<len; k++) cout << array[k] << " ";//打印数组 cout << endl; system("pause"); return 0; } void quickSort(int s[], int l, int r) { if (l< r) { int i = l, j = r, x = s[l]; while (i < j) { while (i < j && s[j] >= x) // 从右向左找第一个小于x的数 j--; if (i < j) s[i++] = s[j]; while (i < j && s[i]< x) // 从左向右找第一个大于等于x的数 i++; if (i < j) s[j--] = s[i]; } s[i] = x; quickSort(s, l, i - 1); // 递归调用 quickSort(s, i + 1, r); } }
有帮助点个采纳
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 2无用这样?
#include<iostream> using namespace std; void quickSort(int a[], int, int);//原型声明 int main() { int array[100] = {0}, k, i = 0, len = 0; char c; for (int j = 0; j < 3; j++) { do { scanf("%d", &array[i]); i++, len++; c = getchar(); } while (c != '\n'); cout << "The orginal arrayare:" << endl; for (k = 0; k < len; k++) cout << array[k] << " "; cout << endl; quickSort(array, 0, len - 1); cout << "The sorted arrayare:" << endl; for (k = 0; k < len; k++) cout << array[k] << " ";//打印数组 cout << endl; } system("pause"); return 0; } void quickSort(int s[], int l, int r) { if (l < r) { int i = l, j = r, x = s[l]; while (i < j) { while (i < j && s[j] >= x) // 从右向左找第一个小于x的数 j--; if (i < j) s[i++] = s[j]; while (i < j && s[i] < x) // 从左向右找第一个大于等于x的数 i++; if (i < j) s[j--] = s[i]; } s[i] = x; quickSort(s, l, i - 1); // 递归调用 quickSort(s, i + 1, r); } }
赞回复展开全部5条评论