这个排序对吗,是直接选择排序吗?
- C/C++ code
void Sort(int *array, int n){ int i,j,t; for (i=0;i<n;i++) { for (j=i+1;j<n;j++) { if (array[j]<array[i]) { t = array[j]; array[j] = array[i]; array[i] = t; } } }}
看很多直接选择排序是要操作下标的,这个也不是冒泡(相邻的两个数依次进行比较),求解答!
[解决办法]
这个是选择吧,每次从剩下未排序的数中选择最小的放到i的位置。
[解决办法]
这是简单选择排序,选择排序还有树形选择排序和堆排序,后者都是改进
[解决办法]
是选择排序的 杨路明那本书上也这么写
[解决办法]
选择排序,冒泡每次要n-i
[解决办法]
是一种比较2的选择排序,正常的应该这样:
- C/C++ code
void Sort(int *array, int n){ int i,j,t; for (i=0;i<n-1;i++) { int index = i; for (j=i+1;j<n;j++) { if (array[j]<array[index]) { index = j; } } t = array[i]; array[i] = array[index]; array[index] = t; }}
[解决办法]
选择排序
[解决办法]
是选择排序
[解决办法]
我用“index = j;”代替了你的“ t = array[j]; array[j] = array[i]; array[i] = t;”,赋值的次数比你少了两次,效率更高!
[解决办法]
呵呵你的排序是粗糙的选择排序。
标准冒泡排序和选择排序:
- C/C++ code
/* 冒泡排序 */void BubbleSort (int s[],int n){ int i,j,temp=0; int exchange; exchange=0; for(i=0;i<n;i++) { for(j=n-1; j > i; j--) { if(s[j] < s[j-1]){ temp=s[j];//注意冒泡排序交换的是相邻两个元素 s[j]=s[j-1]; s[j-1]=temp; exchange=1; } } if(!exchange) return; }}