以行为单位,将每一行旁樱早作为一个单位,相互比较,比较原则是从首字符向后,以此按ASCII码进行比较,最后升序输出
参数
-b 忽略每行前面开始处的空格
-d 只按照英文字母,数字,空格字符排序,忽略其他字符
-m 将几个排序好的文件进行合并
-n 依照数值的大小进行排序,如果是按照数值运雀大小排序一颂源定要加 -n ,否则就会出现 10 比2 小的情况,因为默认比较数值是先比较第1位的,后面的位不考虑
-o 将排序好的结果输出到文件, 也可以使用重定向符号 输出到文件中
-r 以相反的顺序来排序, 默认是升序
在 Linux 中,可以使散皮毕用两种不同的算法来对数组进行排序: 直接排序法和冒泡排序法。直接排序法(selection sort)是一种简单的排序算法,它的基本思想是:首先在未排序的数列中找到最小元素,然后将其存放到数列的起始位置;接着,再从剩余未排序的元素中继续寻找最小元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。
冒泡排序法(bubble sort)是另一种简单的排序算法,它的握含基本思想是:通过重复地遍历要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。遍历数列的工作是重复
地进行直到没有再需要交换,也就是说该数列已经排序完成。这种算法的名字由来是因为越大的元素会经由交换慢慢“浮冲芹”到数列的顶端,故名“冒泡排序”。
两种算法的不同在于它们的实现方式,直接排序法在每次找到最小值并交换位置时只需要进行一次交换,而冒泡排序法需要重复遍历数列并进行比较和交换,导致时间复杂度上差异,直接排序法的时间复杂度是O(n^2),而冒泡排序法的时间复杂度是O(n^2),所以在处理大规模数据时直接排序法更加高效。
下面是一个使用 C 语言实现的直接排序法示例:
#include <stdio.h>
void selection_sort(int arr[], int n) {
int i, j, min, temp
for (i = 0i <n-1i++) {
min = i
for (j = i+1j <nj++) {
if (arr[j] <arr[min]) {
min = j
}
}
temp = arr[i]
arr[i] = arr[min]
arr[min] = temp
}
}
int main() {
int arr[] = {64, 25, 12, 22, 11}
int n = sizeof(arr)/sizeof(arr[0])
selection_sort(arr, n)
printf("Sorted array: \n")
for (int i=0i <ni++)
printf("%d ", arr[i])
return 0
}
这个程序初始化了一个整数数组 arr 并将其传递给 selection_sort() 函数进行排序,最后在main()函数中遍历数组并输出已排序的数组。
冒泡排序示例如下:
#include <stdio.h>
void bubble_sort(int arr[], int n) {
int i, j, temp
for (i = 0i <n-1i++) {
for (j = 0j <n-i-1j++) {
if (arr[j] >arr[j+1]) {
temp = arr[j]
arr[j] = arr[j+1]
arr[j+1] = temp
}
}
1. 最常用:直接排序。2. 输出排序并删除重复行。3. 按照数值大小进行排序。4. 按照倒序进行排列。5. 高级 *** 作 :橘银按照第几列进行排序。由于sort默认是把结果输出到标准输出,所以需要用重定向才能将结果写入文件,形如sort filename >newfile。但是,如果你想把排序结果输出到原文件中,用重定向可就不行了。
-f会将小写字母转换为大写字母来进行比较,亦即忽略大小写,-c会检查文件是否已排好序,如果乱序,则输出第一个乱序的行的相关信息,最后返册册回,-C会检查文件是否已排好序,如果乱序,不输出内容,仅返回,-M会以月份来排序,比如JAN小于FEB等等-b会忽略每州伍宏一行前面的所有空白部分,从第一个可见字符开始比较。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)